2010-10-25 62 views
4

我已經問過類似的問題,但現在我遇到了一個問題,需要管理和實現一個簡單的2D(自上而下)賽車遊戲的「逼真」轉向。汽車轉向算法?

我該如何做一個「現實」的汽車轉向? (我使用C#,但歡迎另一種語言;)) 使用Sin和Cos? 如果是,如何? 在此先感謝!

+0

什麼是「自上而下」的意思是,一個鳥瞰,還是垂直滾動? – Dialecticus 2010-10-25 18:23:22

+0

自上而下意味着:是的,鳥瞰圖。 – stighy 2010-10-25 19:55:58

回答

9

我在我的午休時間,所以我不能做巨大正義「最佳」答案,但僞代碼看起來是這樣的:

y_change = sin(rotation) * speed; 
x_change = cos(rotation) * speed; 

car.x += x_change; 
car.y += y_change; 

你會在每幀執行該代碼;旋轉將由您的轉向輸入控制,速度將由您的加速度輸入控制。

+0

謝謝你的回答。對於旋轉,你的意思是角度(或度)?例如,如果我的車在X = 10,Y = 20,我的速度是30(每秒30像素),旋轉是15度......我可以使用您的提示嗎? – stighy 2010-10-25 19:42:29

+0

謝謝謝謝,再次..謝謝..它有一點改變:在屏幕上,Y軸是倒置的,所以簡單地y_change = y_change *(-1)...,因爲我有角度表達度,我已經將它轉換成輻射(PI/180)* myangle ...;) – stighy 2010-10-25 20:45:43

1

您可能會想要使用其他人已經創建的物理引擎。我聽說過XNA Physics API的好消息。

我會想象你將不得不使用正弦和餘弦,但是這是一個非常大的冰山的只是冰山一角......

+1

我不認爲他需要一個完整的物理引擎來進行鳥瞰2D遊戲。 – 2010-10-25 17:22:06

+0

你可能是對的。我想這取決於他希望他的轉向有多現實。我很想知道如何使用動量,轉向,阻力,魚尾或其他任何因素的複雜轉向算法...... – 2010-10-25 17:31:50

+0

關於物理引擎,謝謝,但對於我的需要,我認爲一個基本的算法是足夠的! – stighy 2010-10-25 19:43:18

0

算法是:

  1. 記錄某人的其他驅動器(使用開發人員版遊戲)

  2. (可選)怎麼分開錄製成片段的各種通常的情況。

  3. 在遊戲中重放錄音。 (使用合適的片段並可能在它們之間插入軌跡)。

您也可以嘗試模糊邏輯和簡單的轉向單元模型。

型號是:

x = integrate horiz_velocity by t 
horiz_velocity = intergate steering_angle by t 
and steering_angle = fuzzy_steering_function(...)