对于基于Cocos2d的项目,我只想使用物理工具箱进行碰撞检测。使用Chipmunk或Box2d有什么优点/缺点?仅限于碰撞检测,Chipmunk或Box2d是更好的工具吗?
回答
我们在谈论什么样的碰撞?
如果你需要的是这些:
- RECT RECT相交 - > CGRectIntersectsRect(..)
- 点RECT - > CGRectContainsPoint(..)
- 半径相交(即两个距离点) - > ccpDistance(..)
然后,你根本不需要物理引擎,也不必编写自己的碰撞检测算法。
花栗鼠和Box2D同样处理碰撞。我认为如果有人问“哪个更好”,这对你来说不会有什么影响。相反,问问自己,你是否更喜欢使用C(Chipmunk)或C++(Box2D)。
同样,你喜欢使用object-oriented, verbose API(Box2D)还是functional, highly abbreviated API(Chipmunk)?
根据你决定什么使得它更容易处理,而不是一个任意的,未定义的,和主观性强的想法,即一个物理引擎是否可能比另一个物理引擎更好,因为技术差异很小,你只能评估他们对游戏设计的影响,如果你们都知道你自己的游戏设计和物理引擎的内部算法真的很好。
我最近在游戏中做过这个,我不会推荐它。 Cocos2D存在严重的问题,例如Game Center登录通知或任何iOS 5系统通知等重叠视图,您的更新方法会跳过一些帧,导致偶然的“隧道效应”,Andy在他的答案中描述。除非你有很大的物体缓慢移动,否则你应该使用物理引擎进行正确的碰撞检测。在Cocos2D的情况下,最好使用Box2D。 –
根据this answer花栗鼠不支持连续碰撞检测,但Box2D的确如此。这一点很重要,以防止“隧道”
这是由斯蒂芬Itterheim的评论澄清他Box2D vs Chipmunk FAQ(物体高速移动时,稍微经过海誓山盟):如果你将不得不非常快速移动的物理对象,例如“子弹”,考虑使用Box2D,因为它可以扫描碰撞,即连续碰撞集成,以防止快速移动的物体深入穿透甚至穿透其他物体。
Chipmunk Collision Detection docs讨论一个separate()
回调。 两个形状刚刚停止触摸第一次这一步。,但我不清楚这是否能够以高速检测碰撞。
也有使用Box2D的一个突围赛我现在的游戏是使用Box2D的一个very negative opinion,我希望我用花栗鼠吧......主要是因为Box2D中有两个严重的问题,正在于自己的比赛而加剧:首先,它有一个非常古老的问题,即物体在角落处“绊脚”,我的比赛是一场突破性的比赛,所以当球沿着墙壁“滚动”时,有时会被挡在墙上,很多人会问为什么我的游戏物理看起来“随机”。
结论:我也很困惑。
- 1. Box2D仅适用于碰撞检测
- 2. Chipmunk支持连续碰撞检测吗?
- 3. 碰撞检测失败Box2d
- 4. Box2d Cocos2d ContactListener检测碰撞
- 5. Box2D碰撞检测问题?
- 6. Cocos2d/Box2d CCRibbon碰撞检测
- 7. box2d碰撞检测,代码
- 8. Libdgx Box2D - 检测碰撞
- 9. 是Chipmunk矫枉过正的简单碰撞检测?
- 10. 简单的碰撞检测在cocos2d box2d..nothing发生在碰撞
- 11. Box2D中的高级碰撞检测 - 碰撞点,力量等
- 12. 更好的2D画布碰撞检测
- 13. Box2D Flash引擎碰撞检测问题
- 14. Box2d碰撞检测与阵列
- 15. Corey O'Neil碰撞检测工具包
- 16. 碰撞检测工作不
- 17. 碰撞检测
- 18. 的Cocos2D +的Box2D或Chipmunk的
- 19. 最好的二维碰撞检测
- 20. Box2D矩形碰撞
- 21. box2d,setTransform和碰撞
- 22. Box2d碰撞(android AndEnigne)
- 23. Box2d碰撞问题
- 24. AndEngine Box2D。移除碰撞后的碰撞游戏碰撞
- 25. Box2D检查潜在的碰撞
- 26. 碰撞检测不检测
- 27. 碰撞检测和碰撞响应
- 28. Android Box2D碰撞检测:如何测试特定边界?
- 29. Cocos2D碰撞检测
- 30. GameQuery碰撞检测
如果你不想处理物理,为什么要包括整个图书馆呢? – alex
虽然我不需要物理学,但我想有一个易于使用的碰撞检测系统,所以我不必自己写。包括一个工具包不应该是一个很大的问题。 –
相当一个主观的问题,“更好”的一个是你可以学习速度最快和理解最好的一个。 –