沿XNA中的曲线路径动画精灵

Ada*_*ile 3 c# xna sprite

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

我能想到的最好的事情就是首先计算曲线并存储在"曲线"类中.然后让精灵沿着那条曲线移动.

但我无法弄清楚如何沿着该曲线实际移动精灵.

我该怎么做,还是只有更好的方法?

And*_*ell 9

基本上你想要使用你的高中物理运动方程(维基百科文章).

对于抛射运动,这是一个重要的等式:

s = s? + v?t + ½at²
Run Code Online (Sandbox Code Playgroud)

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

假设你有一个在2D中移动的抛射物.你基本上为每个维度运行这个等式.在X方向上,您将具有初始位置和一些初始速度但没有加速度.

在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;
}
Run Code Online (Sandbox Code Playgroud)

使用一个小代数,你可以使用相同的运动方程来做一些事情,比如计算发射弹丸的速度来击中特定点.