2012-10-24 94 views
-3

我正在開發一個足球遊戲,用戶必須選擇速度,角度,方位角,以便用戶可以使用所需的選項發佈目標。任何人都可以將我制定爲如何爲遊戲創建軌跡路徑。請幫助我,因爲我無法找到解決方案。3d軌跡路徑計算

+0

那個鏈接讓我變成一個大老的404. –

+0

你正在處理電梯,拖動,旋轉,風,*等*嗎?如果不是,並且您只需要基於初始速度,方向和重力的軌跡,則可以用拋物線精確計算。否則,最好在一系列小而分散的步驟中計算曲線(或者讓自己陷入可怕的積分)。 – paddy

+0

@paddy:不,我不使用任何這種類型。如果可能的話,請給我一個樣品。 – user1512727

回答

5

這是基礎物理。假設Z向上,你的初始X-和Y-速度是恆定的,並由初始角度決定(使用trig)。 Z分量完全由重力決定。您採用仰角並(再次使用trig)將其轉換爲組件。那是你最初的Z-速度。

這是最簡單的公式,它忽略了風,旋轉和阻力(球在飛行期間不會側向移動並且僅受重力影響)。現在

vx = power * cos(elevation) * sin(azimuth); 
vy = power * cos(elevation) * cos(azimuth); 
vz = power * sin(elevation); 

,在時間t位置是簡單牛頓物理學:

x = vx * t; 
y = vy * t; 
z = vz * t - 0.5 * g * t * t; 

哪裏g是重力(9.81米/ S/S)

但是直接使用這些公式不讓你計算反彈等。爲此,你需要逐步計算它。這意味着,對於小時間增量(dt),您可以獲取當前位置和速度並對其進行修改。

vx;    // unchanged 
vy;    // unchanged 
vz -= g * dt; // gravity 
x += vx * dt; 
y += vy * dt; 
z += vz * dt; 

如果您的Z位置低於地面,您會否定vz以允許彈跳。如果您碰到表面(反射表面法向量),則可以做類似的反射。

如果你想讓飛行受到旋轉(馬格納斯效應)和其他力量的影響,情況會更加複雜。您可能還想抑制您的反射,因爲每當球彈跳時都會失去能量。

這取決於你。我已經給出了基礎知識,我希望這會有所幫助。

您應該閱讀拋射體運動。一旦你得到了一些基本的工作並想讓動作更真實,請閱讀運動球的空氣動力學/流體力學......幾乎任何Rabindra Mehta的書或文章都是一個很好的起點。