如何用枪对准子弹?

时间:2012-07-28 01:03:11

标签: java rotation sprite projectile topdown

我有一个我的播放器的图像(自上而下2D)。播放器旋转以面向相机,并持枪。创建项目符号时,会在玩家的x和y处创建项目符号。这在玩家面向正确的方式时有效,但是当玩家旋转并射击时,子弹向正确的方向移动,但不是来自枪。我该如何解决这个问题?

public void fire() {
    angle = sprite.getRotation();
    System.out.println(angle);
    x = sprite.getX();
    y = sprite.getY();

    Bullet b = new Bullet(x, y, angle);
    Utils.world.addBullet(b);
}

1 个答案:

答案 0 :(得分:3)

您必须确定喷枪的偏移量(在油漆中打开图像,或试验和错误),然后旋转该偏移量以获得子弹的初始位置。

以下内容应该有效:注意 - 我没有测试这个,它可能有拼写错误

public void fire() {
    angle = sprite.getRotation();
    System.out.println(angle);
    x = sprite.getX();
    y = sprite.getY();

    double bulletX = x + (gunOffsetX * Math.cos(angle) - gunOffsetY * Math.sin(angle);
    double bulletY = y + (gunOffsetX * Math.sin(angle) + gunOffsetY * Math.cos(angle);

    Bullet b = new Bullet(bulletX , bulletY , angle);
    Utils.world.addBullet(b);
}

来源:http://en.wikipedia.org/wiki/Rotation_(mathematics)