Cocos2d 自带了两套物理引擎:Box2D 和 Chipmunk。那么我们应该选择哪一个呢?
很多情况下,这个选择取决于个人口味。很多游戏开发者对这两个物理引擎的 争论集中于它们所用的编程语言:Box2D 是用 C++写的,而 Chipmunk 用的是 C。
你可能因为 C++接口而更喜欢 Box2D。使用 C++的好处是它可以很好地与同样是 面向对象的 Objective-C 进行整合。而且 Box2D 中的变量和方法名都是用全称 命名的,相比之下,Chipmunk 中很多地方用的是只有一个字母的简写。再者, Box2D 中使用了运算符重载(Operator Overloading),例如,你可以将两个 矢量(vector)直接相加:
b2Vec2 newVec = vec1 + vec2;
有一些功能只有Box2D提供,Chipmunk是没有的。比如,Box2D有针对快速移动 物体(例如子弹)直接穿透物体而不进行碰撞测试的解决方法。
如果你不是很熟悉C++的话,你可能会发现学习C++是要花费挺多时间和精力的。 这样的话,对于熟悉C语言语法或者喜欢更简单一些的物理引擎的你,可以选择 Chipmunk。因为Chipmunk早Box2D几个月整合进cocos2d之中,所以网上关于 Chipmunk的教程和论坛帖子也相对多一些。不过Box2D的教程数量也在赶上来。
不过有个事情要预先给你提个醒:Chipmunk使用了C的structures,它会暴露内 部的域。如果你是在做试验,并且不知道某些域是拿来做什么用的,而且没有 文档解释这些域的话,你就不应该改变它们 – 因为它们只被用于内部。
Chipmunk有一个很受欢迎的Objective-C接口,叫做SpaceManager。你可以利用 SpaceManger很容易地把cocos2d精灵添加到刚体上,添加调试用的绘图等。你 可以通过以下链接下载Chipmunk的SpaceManager: http://code.google.com/p/chipmunk-spacemanager
对于功能来说,两个选择都差不多。除非你的游戏依赖于某个物理引擎特有的 功能,否则你可以使用任何一个引擎。特别是如果你对任何一个物理引擎都不 熟悉,那么你可以根据引擎所使用的语言的编程风格来选择自己喜欢的引擎。