2011-08-21 130 views
4

我實現了一個非常基本的汽車運動系統:汽車/汽車四處漂流角架空賽車遊戲

_velocity.x = Math.cos(angleAsRadians) * _speed; 
_velocity.y = Math.sin(angleAsRadians) * _speed; 

_position.x += _velocity.x; 
_position.y += _velocity.y; 

您可以通過增加/減少的速度移動,並通過增加/減少的角度轉動。

我該如何添加漂流,以便我越快,隨着轉身,我越漂移?我無法弄清楚,並且沒有其他可以谷歌的來源。

想法?

+1

目前您有兩個自由度(X,Y),爲了正確地做到這一點,您還需要汽車的方向(偏航角)。此外,您可能需要前/後重量平衡。 – ja72

回答

0

決定一個「漂移係數」,就像速度乘以0.5%的距離乘以時間。

_position.x += (1+coeff)*_velocity.x; -> _position.x += (1+0.005)*_velocity.x; 
_position.x += (1+coeff)*_velocity.y; -> _position.y += (1+0.005)*_velocity.y; 

所以在這種情況下,它是可加性的,並且基於速度。

該係數也可以基於軌道半徑,任何競賽條件(滑等)之類的變量而變化,在x和y軸之間不同,並隨機化爲正或負。

2

汽車物理學有點棘手。你需要的是實現一個基於slip的物理引擎。

This article很好地解釋了這個過程。爲了使其正常工作,需要考慮輪胎的旋轉以及輪胎朝一個方向行進時的力差和地面朝另一個方向。事實證明,這是兩個力量,一個垂直於車輪軸線,一個側向與汽車相關。

當然,這是工作的很多,和做任何事情時,遊戲相關的一般規則是如果它看起來不錯,這是件好事。所以,我們可以從實際物理過程中獲得一些里程和想法,並採取一些適當的解決方案,以創造一個可信的真實交易傳真。

+0

提供了很棒的資源! – ja72