2012-05-24 61 views
0

我使用Cocos2D和Box2D进行某些物理游戏。偶尔有一个问题,我的“球/子弹/驱逐舰”物体卡在两个“目标”物体之间,并且需要永远消失。Box2D对象被卡住时,应该销毁其卡住的对象

这很愚蠢,因为子弹和目标物体之间的碰撞会破坏目标。 (通常,当然,这工作正常。)

它还没有睡觉在this question,因为它在两个物体之间微小的空间中疯狂地晃动。

我将子弹作为Box2D中的“子弹”对象。

为了算作碰撞,对象在前一帧必须有一些最小距离吗?

回答

0

诀窍是,对接触的给定的“集群”,在Box2D的接触侦听器调用(按照这个顺序):

BeginContact() 
PreSolve() // As many times as necessary 
PostSolve() // As many times as necessary 
EndContact() 

我是,默认情况下,只能从EndContact()获得接触这意味着一个一系列快速碰撞都会在评估其效果之前发生。我将我的destroy类型代码移动到PostSolve(),一切都很好。