c++ - 如何在 box2d 中进行碰撞连接

标签 c++ ios box2d collision

我在接触监听器的 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/

相关文章:

c++ - 什么会导致 Box2D 突然停止?

c++ - 如何使用 GetMonitorCapabilities 和 GetMonitorBrightness 函数

c++ - 以简单的方式处理异常语法问题

iphone - 应用程序进入后台时 AVPlayer 暂停和播放问题

c++ - 在具有 std::pair 键和值的映射中添加 b2vec2

c++ - 堆叠的 box2d 对象开始抖动

c++ - 排序数组/字符串 vector

c++ - 设置不插入

ios - 如何增加颜色空间CAGradientLayer

ios - CurrentValueSubject 和 @Published 之间的区别