Box2D对象在应该销毁它们之间的对象时会卡住

时间:2012-05-24 18:23:34

标签: ios cocos2d-iphone box2d

我正在使用Cocos2D和Box2D进行一些物理游戏。我的“球/子弹/毁灭者”物体在两个“目标”物体之间卡住,并且需要永远地解决这个问题。

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

它没有像this question那样进入睡眠状态,因为它在两个物体之间的微小空间中疯狂地四处振动。

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

对象必须在前一帧中有一些最小距离才能算作碰撞吗?

1 个答案:

答案 0 :(得分:0)

诀窍在于,对于给定的联系人“群集”,Box2D联系人监听器调用(按此顺序):

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

默认情况下,我只是从EndContact()获取联系人,这意味着在评估其效果之前会发生一系列快速碰撞。我将destroy类型的代码移到了PostSolve(),一切都很顺利。