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

时间:2010-07-17 21:42:48

标签: c# xna sprite

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

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

但我无法弄清楚如何沿着那条曲线移动精灵。

我该怎么做,或者只是一种更好的方式?

1 个答案:

答案 0 :(得分:9)

基本上你想要使用你的高中水平物理equations of motion(维基百科文章)。

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

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

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

假设您有一个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;
}

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

相关问题