-1

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

提前致谢。

4

1 回答 1

0

让我们假设一个坐标系,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
于 2012-12-02T16:33:33.963 回答