2012-02-19 25 views
1

所以我正在研究一個遊戲,本質上是一個球的自上而下的視圖。當我點擊球時,我基本上想要按照給定的方向啓動它。這將是瞬間的力量(想象一下撞球的球)。我正在嘗試使用applyImpulse來做到這一點。Cocos2d + Chipmunk Physics - cpBodyApplyImpulse()

到目前爲止我有:

cpBodyApplyImpulse(sprite.body, 
        cpBodyLocal2World(sprite.body, cpv(0.0, 1.0)), 
        cpBodyLocal2World(sprite.body, cpv(0.0, 0.0)) 
); 

據我瞭解,在2個載體,該函數只有在爲「世界COORDS」所以我在做什麼是身體相對座標一切可視化然後將它們轉換成世界座標。

從我上面的代碼中,我會認爲球會直線上升而不旋轉,因爲它是在重心的正y方向上的向量。然而,球最終右轉,失控地旋轉着。任何想法爲什麼會發生這種情況,以及我如何實現我正在嘗試做的事情?

回答

1

cpBodyApplyImpulse需要輸入身體座標,而不是世界。

儘量只此:

cpBodyApplyImpulse(sprite.body, 
        cpv(0.0, 1.0), 
        cpv(0.0, 0.0)); 
+0

感謝。這工作,不能相信我錯過了。還有一個很快的問題 - 也許我一直在想這個太長,但是一個向量如何被定義爲一個單一的點?矢量的來源在哪裏? – 2012-02-20 15:37:10

+0

在這種情況下,兩個矢量的原點是您身體的重心。矢量(0,0)只是意味着不會被任何東西抵消。 (你以前的旋轉是因爲在世界座標系中這個矢量不是0,0,所以你將你的力量應用到物體的一側) – deanWombourne 2012-02-20 16:17:18

+0

非常感謝。 – 2012-02-20 17:54:11