使用抛物线和XNA使炮弹在空中飞行

时间:2012-12-02 15:04:22

标签: c# math xna position

我想玩XNA一段时间,所以我想尝试制作一个游戏,玩家可以用大炮射击炮弹并让它击中东西。我想通过使用抛物线让它在空中拱起来让它看起来更逼真但是因为我无法实现我在网上正确找到的方程式。我想知道是否有人知道我可以用来控制大炮的X和Y位置产生抛物线的方程式。我所拥有的只是我希望它开始的程度,大炮的起始位置和它飞行的速度并不重要。

提前致谢。

1 个答案:

答案 0 :(得分:0)

假设一个坐标系y正向上,x向右增加。让我们假设炮弹从原点(0,0)向上和向右以v_init m/s的速度以A的角度拍摄(注意弧度与度数;如果你的系统要求角度为弧度,您可以通过将度数除以180并乘以pi来将度数转换为弧度。

如果炮弹的初始速度为v_init,那么x方向的速度将为:

v_x = cos(A) * v_init

y方向的速度为:

v_y = sin(A) * v_init

炮弹的高度将由下式指定:

h = (1/2)gt^2 + (v_y * t)

其中g是由于重力引起的加速度为-9.81 m / s ^ 2,而t是以秒为单位的时间。

因此,在任何给定时间t,你的炮弹将在:

x_t = v_x * t
y_t = 1/2(-9.81)t^2 + (v_y * t)

您可以使用该等式通过将高度设置为0并求解t来找出球在空中的持续时间:

t_total = 2 * (v_y / 9.81)

在飞行中途,球将达到最大高度,因此抛物线的高峰位于:

x_peak = 1/2 * t_total * v_x
y_peak = 1/2 * (-9.81) (t_total / 2)^2 + (v_y * t_total / 2)

炮弹落在:

x_land = t_total * v_x
y_land = 0