处理弹丸未命中和轨迹

时间:2012-02-29 20:27:45

标签: c# xna

我有几个用于向目标射击子弹的公式,但当玩家从原始位置移动并且子弹按预期到达玩家的旧位置时,它都会崩溃。

当PlayerPosition == BulletPosition时,如果子弹未命中,如何使子弹保持正确的方向?我的问题是,一旦子弹到达它应该停止的地方,我需要一个新的公式来保持它的移动。

如果它击中了玩家,那很简单,删除该项目,但我似乎无法找到一个好的解决方案。下面是一些代码,现在它非常简单。

 var movement = PlayerPosition - Position;
        if (movement != Vector2.Zero)
            movement.Normalize();
        //var angle = Math.Atan2(movement.Y, movement.X);
        Position += movement*_projectileMoveSpeed;

1 个答案:

答案 0 :(得分:1)

您是否打算让子弹的速度受到与玩家距离的影响?

我只是保存速度,然后在未来的帧中使用它。在伪代码中:

to shoot a bullet:
    direction is sign(PlayerPosition - Position)
in each frame:
    for each bullet:
        modify position by direction * projectileMoveSpeed
        handle collision (player or screen edge)