0
我聽出了接觸聽衆的BeginContact功能的碰撞..如何使關節碰撞在Box2D的
void MagneteListener::BeginContact(b2Contact* contact)
{
// I detect 2 needed bodies.
...
b2RevoluteJointDef revDef;
revDef.lowerAngle = 0.0;
revDef.upperAngle = 0.0;
revDef.enableLimit = true;
revDef.collideConnected = false;
revDef.Initialize(body1, body2, body1->GetWorldCenter());
_world->CreateJoint(&revDef);
// End create joint
}
其結果是程序錯誤
斷言失敗崩潰:(IsLocked()==假),函數CreateJoint,
如果我在下一個世界步驟碰撞之前創建與這兩個物體的關節,那麼它的效果很好。
_world->Step(dt, velocityIterations, positionIterations);
那麼問題是否有辦法聯合海峽碰撞?
正如我在一個問題寫,我的下一個步驟之前做到這一點。所以正確的方法是檢測碰撞,保存信息,比設置contact-> SetEnabled(false)並在下一步創建關節之前? – Buron
@Buron:我不明白你爲什麼需要關閉聯繫人。是的,這是唯一的方法,因爲您無法在模擬過程中創建新的物體,固定裝置或關節。在我的項目中,我只保存了所有的碰撞信息,並在'update'返回後立即處理它。 – Andrew
真的非常感謝你! – Buron