-1
我想玩XNA一段時間,所以我想嘗試製作一個遊戲,玩家可以從大炮射擊炮彈並擊中它。我想通過使用拋物線在空中拱形,讓它看起來更真實,但是因爲我無法正確實現我在網上找到的方程。我想知道是否有人知道我可以用來控制大炮的X和Y位置以產生拋物線的等式。我所擁有的只是我希望它開始的程度,大炮的起始位置和它飛行的速度並不重要。使用拋物線和XNA讓炮彈在空中飛翔
在此先感謝。
我想玩XNA一段時間,所以我想嘗試製作一個遊戲,玩家可以從大炮射擊炮彈並擊中它。我想通過使用拋物線在空中拱形,讓它看起來更真實,但是因爲我無法正確實現我在網上找到的方程。我想知道是否有人知道我可以用來控制大炮的X和Y位置以產生拋物線的等式。我所擁有的只是我希望它開始的程度,大炮的起始位置和它飛行的速度並不重要。使用拋物線和XNA讓炮彈在空中飛翔
在此先感謝。
我們假設一個座標系,其中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
我認爲'H =(1/2)^ GT 2 + v_y'應該是'H =(1/2)^ GT 2 + v_y * t + h0'其中'h0'是初始高度;類似於'y_t'。 'x_t'也應該考慮到最初的x位置。 – andand
是的。我確實說過,我們假定炮彈從原點(0,0)射擊。 – vacawama
但是,你還需要乘以時間't'的初始速度('v_x'和'v_y')。您的高度/ y分量方程不會這樣做。你只能在x方向上做到這一點。 – andand