沿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; }
使用一个小代数,你可以使用相同的运动方程来做一些事情,比如计算发射弹丸的速度来击中特定点。