处理炮弹未命中和弹道

本文关键字:弹道 处理 | 更新日期: 2023-09-27 18:26:07

我有几个公式可以用来向目标发射子弹,但当玩家从原来的位置移动,子弹按预期到达玩家的旧位置时,所有公式都会崩溃。

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

如果它击中了玩家,那很容易,移除物品,但我似乎找不到一个好的解决方案。下面是一些代码,现在非常简单。

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

处理炮弹未命中和弹道

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

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

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)