【问题标题】:Dealing with Projectile Misses and trajectory处理射弹未命中和弹道
【发布时间】:2012-03-01 04:33:12
【问题描述】:

我有几个用于向目标发射子弹的公式,但是当玩家从其原始位置移动并且子弹按预期到达玩家的旧位置时,所有公式都会失效。

当 PlayerPosition == BulletPosition 时,如果子弹未命中,我如何让子弹继续朝着正确的方向前进?我的问题是一旦子弹到达它应该去的地方它就会停下来,我需要一个新的公式来保持它移动。

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

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

【问题讨论】:

    标签: c# xna


    【解决方案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)
    

    【讨论】:

    • 我认为问题在于 PlayerPosition 在我的实例中永远不会增加。我认为解决方法是在最后添加 PlayerPosition += My new Vector,这样它就永远无法到达最终位置并且会死在边缘。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-11-25
    • 1970-01-01
    • 2014-12-14
    • 2022-01-19
    • 1970-01-01
    • 2015-03-14
    相关资源
    最近更新 更多