2011-03-04 63 views
3

所以即時嘗試創建兩個jetpacks的人物 - 其中任何一個都可以相互獨立地發射創建一個脈衝偏移重心(使用Cocos2d,Chipmunk和SpaceManager)。如何創建一個基於旋轉的脈衝向量(Cocos2d,Chipmunk,Spacemanager)

我的問題是,默認情況下,脈衝函數沒有考慮到對象的當前旋轉(即它指向哪個方向),因此我使用的脈衝偏移和方向是相同的重要的是角色指向什麼方向。

我試圖創建一個更逼真的模型 - 衝動是基於對象的現有旋轉。我確定我可以通過編程方式維護一個矢量變量來保存角色指向和使用的當前方向,但必須有一個更簡單的答案。

我聽過人們寫的關於世界空間與身體相對座標以及默認情況下衝動是如何處於世界空間的問題,以及身體相對能夠解決我的問題。這是真的?如果是的話,你如何在這兩個座標系之間進行轉換?

任何幫助你可以給我將非常感激。

+0

聽起來像你只需要將你的衝動從物體空間轉換到世界空間。 – 2011-03-16 22:48:25

+0

我聽過人們之前說過 - 但我似乎找不到具體的方法來做到這一點。 cocos2d中是否有一個預定義的方法,即時在這裏丟失? – Salman 2011-03-22 03:55:04

回答

1

如果您有存儲在theta你的角色(它通過旋轉的角度,逆時針會)的當前航向,你的衝動載體是ixiy,那麼世界空間向量將

ix_world = ix * cos(theta) - iy * sin(theta); 
iy_world = ix * sin(theta) + iy * cos(theta); 

角度theta必須以弧度爲單位,以使cossin正常工作。如果您需要將度數轉換爲弧度,請將角度乘以PI/180.0

如果你想看看這個公式來自哪裏,請閱讀here

+0

花栗鼠內置功能如何?我們還不能使用函數'cpVect cpBodyLocal2World(cpBody * body,cpVect v)' 和'cpVect cpBodyWorld2Local(cpBody * body,cpVect v)'? – Salman 2011-03-27 18:06:46

+0

我對Chipmunk一無所知。 – Alex 2011-03-28 00:18:43

相關問題