0

我正在使用 Cocos2D 和 Box2D 进行一些物理游戏。偶尔会出现一个问题,即我的“球/子弹/毁灭者”物体卡在两个“目标”物体之间,并且需要很长时间才能出来。

这是愚蠢的,因为子弹和目标物体之间的碰撞应该会破坏目标。(通常,当然,这很好用。)

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

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

物体在前一帧中是否有一些最小距离才能算作碰撞?

4

1 回答 1

0

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

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

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

于 2012-05-24T18:44:30.430 回答