0

在我的 iPhone 应用游戏中,主角将敌人(以 b2bodies 为代表)困在狭小的空间内。有时当太多敌人被困在太小的空间中时,我的游戏会导致 b2Assert(kNormal > b2_epsilon) 失败。

忽视这个断言有什么危险?在我的游戏中,一旦敌人被困在一个狭小的空间内,他们就没有多少用处了,所以如果他们以非物理方式行事,那很好。但是,如果忽略此断言导致 box2D 物理引擎出现其他问题,超出了被困 b2body 的范围,那么我需要尝试修复它。如果是这样,我将如何解决它?

最后,在应用程序的发布版本中是否触发了断言?

4

2 回答 2

0

此断言已于 2011 年 6 月 18 日从 b2ContactSolver.cpp 中删除。尝试更新您的 Box2D。

断言只是调试工具,它们不会被触发,也不会在发布版本中执行。

于 2013-02-08T15:56:05.950 回答
0

如果你忽略一个断言,任何事情都可能发生。它们不会在发布版本中触发。不过,您必须将它们视为致命的程序错误。

断言用于确保方法的输入在定义的边界内,或者运行该方法的条件有效。如果不是这种情况,并且程序断言,则该方法的结果是未定义的。它可能会被简单地忽略并且不提供任何结果(尽管这可能会渗透到代码的其他部分,从而导致那里的后续错误)。或者它会立即崩溃,甚至稍后随机崩溃。

你需要弄清楚这个断言的确切情况,然后确保这些情况不会发生。如果敌人可能被困在狭小的空间内,请确保不会发生这种情况——如何做到这一点取决于您自己。

于 2013-02-08T15:57:19.617 回答