当我的游戏由于断言失败而崩溃时,我收到以下日志。
Assertion failed: (typeA == b2_dynamicBody || typeB ==b2_dynamicBody), function SolveTOI, file
/SourceCache/PhysicsKit/PhysicsKit-6.5.4/PhysicsKit/Box2D/Dynamics/b2World.cpp, line 678.
间歇性地发生这种情况(我玩游戏的次数大约是10次)。我所能得到的是,与场景物理世界中的接触检测相关的Box2D引擎存在一些不一致。但我无法在我的代码中查明问题的原因。
有人可以告诉我如何找到问题的根源吗?
答案 0 :(得分:1)
断言表明两个物体都不是动态的。
确保不要将body的动态属性更改为NO(使用位掩码将它们排除在碰撞之外)。绝对不要在联系回调方法中这样做,因为看起来这个断言发生在接触碰撞解决步骤中。似乎合乎逻辑的是,两个静态物体只能接触并试图解决碰撞,当其中一个静态物体在接触开始时最初是动态的。