2012-12-02 16 views
-1

我想玩XNA一段時間,所以我想嘗試製作一個遊戲,玩家可以從大炮射擊炮彈並擊中它。我想通過使用拋物線在空中拱形,讓它看起來更真實,但是因爲我無法正確實現我在網上找到的方程。我想知道是否有人知道我可以用來控制大炮的X和Y位置以產生拋物線的等式。我所擁有的只是我希望它開始的程度,大炮的起始位置和它飛行的速度並不重要。使用拋物線和XNA讓炮彈在空中飛翔

在此先感謝。

回答

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 
+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,0)射擊。 – vacawama

+0

但是,你還需要乘以時間't'的初始速度('v_x'和'v_y')。您的高度/ y分量方程不會這樣做。你只能在x方向上做到這一點。 – andand