2012-09-04 109 views
3

我已經搜索瞭如何使Box2d物體沿着貝塞爾曲線或具有起點,終點和可能的另一個控制的弧狀路徑移動點。我知道cocos2d對象可以使用ccBezier移動,但Box2d的實體怎麼做?請幫忙。提前致謝。如何使box2d物體沿着貝塞爾曲線/圓弧路徑移動

+0

您可以使用SetTransform來設置b2Body的位置。根據需要經常更新它。您還可以使用SetLinearVelocity使身體向期望的點移動。 – iforce2d

+0

@ iforce2d:我不知道如何設置線速度來使身體上升和下降(以弧狀/貝塞爾狀運動)。我希望我不會過多地向你展示一個例子。謝謝。 – allenalex

+0

這裏的源代碼可能是有用的:http://www.iforce2d.net/b2dtut/sticky-projectiles(在右側上下移動的運動物體沿着1d中的正弦曲線移動,您可以更改目標位置在你的貝塞爾曲線上) – iforce2d

回答

0

我試圖用曲線移動box2d的身體(使蜘蛛在小行星周圍走動)。我發現每一幀都使用SetTransform工作,但它使引擎中的碰撞響應失敗。

我能夠通過使用棱形接頭找到更好的解決方案。從要開始的位置(p0)開始創建一個聯合,並指向下一個航點(p1)。然後用電機將關節從p0推到p1。當身體靠近下一個點時,摧毀關節併爲接下來的兩點形成新的關節。身體仍然有它的速度,所以運動看起來很順利。

I put a more complete post on this on Stack Overflow here

對您有幫助嗎?