c# - 在 XNA 中沿曲线路径动画 Sprite

标签 c# xna sprite

我想在 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/

相关文章:

c# - StringBuilder 值不能为 Null ASP .NET MVC4

c# - 我无法使 ValidateInput(False) 工作 - 从客户端检测到具有潜在危险的 Request.Form 值

c# - NULL-Pointer Assignment Partition 是否有错误?

compiler-construction - (XNA 4.0) 是否有 (XNA 3.1 "Effect.CompileFromFIle") 等效项?

c# - XNA 奇怪的地形撕裂

c - 我的代码不会显示 Sprite SDL2

c# - 使用 Json.net 反序列化 JSON 对象数组

c# - 为什么XNA Write/ReadObject <Model>()不保留顶点/索引缓冲区数据?

java - 如何使 LIbgdx 中的像素更加可见?

css - 带有 Sprite 的 IE6 背景位置