我有一个我的播放器的图像(自上而下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);
}
.

有帮助吗?

解决方案

必须确定喷枪的偏移量(在涂料中打开图像或试验&error),然后旋转该偏移量以获得子弹的初始位置。

如下所示应该工作:注意 - 我没有测试这个,它可能有拼写

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)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top