我想在 XNA 游戏中实现弹道轨迹,并试图找出使弹丸遵循引力曲线的最佳方法。
我能想到的最好的事情就是先计算曲线并存储在“曲线”类中。然后让 Sprite 沿着那条曲线移动。
但我真的想不出如何沿着那条曲线实际移动 Sprite 。
我该怎么做,或者有更好的方法吗?
最佳答案
基本上你想使用你的高中物理水平equations of motion (维基百科文章)。
对于弹丸运动,这是重要的方程式:
s = s₀ + v₀t + ½at²
(位移等于:初始位移,加上初始速度乘以时间,加上半加速度乘以时间的平方。)
假设您有一个二维移动的射弹。您基本上为每个维度运行此等式。在 X 方向上,您将有一个初始位置和一些初始速度,但没有加速度。
在 Y 方向上,您将有一个初始位置、初始速度和由于重力而向下的加速度。
您所要做的就是记录您的射弹发射后的时间,并在计算出的位置绘制您的 Sprite 。
这是一些粗略的 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;
}
通过一些代数知识,您可以使用相同的运动方程来计算射弹击中特定点的速度。
关于c# - 在 XNA 中沿曲线路径动画 Sprite ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3273396/