如何修复b2ContactlSolver中的b2Assert(kNormal> b2_epsilon)错误?

时间:2013-02-08 15:20:15

标签: box2d assert box2d-iphone

在我的iPhone应用程序游戏中,主角在小空间中捕获敌人(由b2bodies代表)。有时当太多的敌人被困在太小的空间中时,我的游戏失败了b2Assert(kNormal> b2_epsilon)。

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

最后,Asserts是在app的发布版本中解雇的吗?

2 个答案:

答案 0 :(得分:0)

2011年6月18日来自b2ContactSolver.cpp的断言was removed。尝试更新您的Box2D。

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

答案 1 :(得分:0)

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

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

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