1

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

1 回答 1

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)

于 2012-07-28T01:14:13.160 回答