【问题标题】:Box2D object gets stuck when should destroy the objects it's stuck betweenBox2D 对象在应该销毁它卡在其间的对象时卡住
【发布时间】:2012-05-25 02:44:30
【问题描述】:
我正在将 Cocos2D 和 Box2D 用于具有一些物理特性的游戏。偶尔会出现一个问题,我的“球/子弹/毁灭者”对象卡在两个“目标”对象之间,并且需要很长时间才能出来。
这很愚蠢,因为子弹和目标物体之间的碰撞会破坏目标。 (通常,当然,这很好用。)
它没有像this question 那样进入睡眠状态,因为它在两个物体之间的狭小空间里疯狂地振动。
我将子弹作为 Box2D 中的“子弹”对象。
物体在前一帧中是否有一些最小距离才能算作碰撞?
【问题讨论】:
标签:
ios
cocos2d-iphone
box2d
【解决方案1】:
诀窍在于,对于给定的联系人“集群”,Box2D 联系人监听器调用(按此顺序):
BeginContact()
PreSolve() // As many times as necessary
PostSolve() // As many times as necessary
EndContact()
默认情况下,我只从EndContact() 获取联系人,这意味着在评估其效果之前会发生一系列快速碰撞。我将我的destroy-type 代码移动到PostSolve(),一切都很好。