コンタクトリスナーのBeginContact関数で衝突を検出しました。
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()== false)、関数CreateJoint、
次のワールドステップの前に衝突後にこれらの2つのボディとジョイントを作成すると、うまく機能します。
_world->Step(dt, velocityIterations, positionIterations);
それで、問題は衝突時に海峡をつなぐ方法はありますか?