仅用于碰撞检测,是Chipmunk还是Box2d更好的工具?

时间:2011-10-06 11:52:50

标签: ios cocos2d-iphone box2d chipmunk

对于基于Cocos2d的项目,我只想使用物理工具包进行碰撞检测。使用Chipmunk或Box2d的优缺点是什么?

2 个答案:

答案 0 :(得分:9)

根据this answer Chipmunk不支持连续碰撞检测,但Box2D支持。这对于防止“隧道效应”(物体在高速移动时略微穿过彼此)很重要

Steffen Itterheim对他的Box2D vs Chipmunk FAQ的评论澄清了这一点:如果您将拥有非常快速移动的物理对象,例如“子弹”,请考虑使用Box2D,因为它可以扫描碰撞,即连续碰撞集成以防止快速移动的物体深入穿透甚至穿过其他物体。

Chipmunk Collision Detection个文档讨论separate()回调。 这两个形状刚刚第一次停止触摸。但我不清楚这是否会影响它们以高速检测碰撞的能力。

还有very negative opinion使用Box2D进行突破游戏我当前的游戏正在使用Box2D,我希望我用它来使用Chipmunk ...主要是因为Box2D有两个严重的问题,那就是在我的游戏中加剧了:首先,它有一个真正的旧错误,对象在角落“躲避”,我的游戏是一个突破性的游戏,所以当球沿着墙“滚动”时,有时它会阻碍并被扔离墙壁很多人问为什么我的游戏物理看起来是“随机的”。

结论:我也很困惑。

答案 1 :(得分:4)

我们在谈论什么样的碰撞?

如果您只需要这些:

  • rect intersects rect - > CGRectIntersectsRect(..)
  • 指向rect - > CGRectContainsPoint(..)
  • 半径相交(即两点的距离) - > ccpDistance(..)

然后你根本不需要物理引擎,也不必编写自己的碰撞检测算法。

Chipmunk和Box2D同样处理碰撞。我认为,如果有人问“哪个更好”,那对你来说并不重要。相反,问问自己是否更习惯使用C(Chipmunk)或C ++(Box2D)。

同样,您更喜欢使用object-oriented, verbose API(Box2D)还是functional, highly abbreviated API(花栗鼠)?

根据什么使你更容易使用而不是一些任意的,未定义的和高度主观的关于一个物理引擎是否比另一个更好的想法来决定你的决定,因为技术差异很小,你只能评估如果你们都非常了解自己的游戏设计和物理引擎内部算法,那么它们对你游戏设计的影响。