2011-07-29 27 views
2

我對Box2D比較新,我有幾個簡單的問題,任何曾經使用Box2D的人都應該能夠相對容易地回答。關於Box2D聯繫監聽器和過濾器和接頭的快速提問

  1. 在我的beginContact回調方法中,我創建了一個新的Joint並將其添加到我的世界中。但是,當我這樣做時,我得到一個運行時錯誤。這是因爲不允許在這些回調方法中創建新對象並將其添加到世界中?

  2. 當創建關節時,是否存在錨點必須避免運行時錯誤的特定位置?目前,我正在平均所有接觸點的座標,並將其用作我的錨點,因爲我希望物體在它們碰撞的地方被焊接在一起。我在正確的軌道上嗎?思考?註釋?

+1

哈哈哈,一切都適中 – Olshansk

+0

excelent thread ++ – mKorbel

回答

2

由於世界處於仿真狀態,因此無法在beginContact方法中創建關節。你必須保留所有你想要做的動作(例如創建關節)在某個數組或任何其他結構中,並在Step方法b2World完成後才能執行與世界相關的動作。

如果您需要大量的焊接接頭,在製作複雜的結構時會遇到問題。模擬不會很好。在碰撞的物體之一上創建夾具並移除其他物體會更好。