我想和 XNA 一起玩一段时间,所以我想尝试制作一款游戏,玩家可以用大炮射出炮弹并让它击中东西。我想通过使用抛物线让它在空中拱起来让它看起来更逼真,但是因为我无法正确实现我在网上找到的方程。我想知道是否有人知道我可以用来控制大炮的 X 和 Y 位置以生成抛物线的方程式。我所拥有的只是我希望它启动的程度,大炮的起始位置和它飞行的速度并不重要。
提前致谢。
让我们假设一个坐标系,y
正向向上,x
向右增加。让我们假设炮弹从原点 (0, 0) 以 0v_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