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

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

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

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

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

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

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

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; } 

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