如何将子弹与枪对齐



我有我的玩家的图像(自上而下的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);
}

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

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

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_(数学)

相关内容

  • 没有找到相关文章

最新更新