由于联系委托中的断言失败导致游戏崩溃

时间:2014-03-19 06:41:39

标签: ios objective-c box2d sprite-kit skphysicsworld

当我的游戏由于断言失败而崩溃时,我收到以下日志。

 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引擎存在一些不一致。但我无法在我的代码中查明问题的原因。

有人可以告诉我如何找到问题的根源吗?

1 个答案:

答案 0 :(得分:1)

断言表明两个物体都不是动态的。

确保不要将body的动态属性更改为NO(使用位掩码将它们排除在碰撞之外)。绝对不要在联系回调方法中这样做,因为看起来这个断言发生在接触碰撞解决步骤中。似乎合乎逻辑的是,两个静态物体只能接触并试图解决碰撞,当其中一个静态物体在接触开始时最初是动态的。