我在接触监听器的 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,
如果我在下一个世界步骤之前碰撞后与这两个物体创建关节,效果很好。
_world->Step(dt, velocityIterations, positionIterations);
那么问题来了,有什么办法可以 union 海峡碰撞吗?
最佳答案
您应该在程序的某处存储创建关节所需的信息,并在b2World::update
函数返回时使用它
关于c++ - 如何在 box2d 中进行碰撞连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12525962/