代码之家  ›  专栏  ›  技术社区  ›  Adam Haile

在XNA中沿曲线路径设置精灵动画

  •  3
  • Adam Haile  · 技术社区  · 14 年前

    我想在一个XNA游戏中实现一个弹道轨迹,并试图找出使射弹遵循引力曲线的最佳方法。

    我能想到的最好的办法就是先计算曲线,然后存储在“curve”类中。然后让精灵沿着曲线移动。

    但我真的不知道如何沿着曲线移动精灵。

    1 回复  |  直到 14 年前
        1
  •  9
  •   Andrew Russell    14 年前

    基本上你想用高中水平的物理 equations of motion

    对于弹丸运动,这是一个重要的方程式:

    s = s₀ + v₀t + ½at²
    

    (位移等于:初始位移,加上初始速度乘以时间,加上半加速度乘以时间平方。)

    在Y方向上,你会有一个初始位置,初始速度,和由于重力向下的加速度。

    你所要做的就是跟踪你的炮弹发射后的时间,并在计算的位置画出你的精灵。

    下面是一些粗略的XNA代码-正如您所见,我可以一次计算两个轴:

    Vector2 initialPosition = Vector2.Zero;
    Vector2 initialVelocity = new Vector2(10, 10); // Choose values that work for you
    Vector2 acceleration = new Vector2(0, -9.8f);
    
    float time = 0;
    Vector2 position = Vector2.Zero; // Use this when drawing your sprite
    
    public override void Update(GameTime gameTime)
    {
        time += (float)gameTime.ElapsedGameTime.TotalSeconds;
    
        position = initialPosition + initialVelocity * time
                   + 0.5f * acceleration * time * time;
    }
    

    有了一点代数,你就可以用同样的运动方程来做一些事情,比如计算弹丸击中特定点的速度。