ChipMunk
直接了当点,算是给大家普及概念,ChipMunk 就是一个物理引擎,类似BOX2D 这种,chipmunk本是一个独立的开源项目,用纯c编写.cocos2d同时整合了chipmunk和box2d两个物理引擎.相比之下,chipmunk更轻量易用。
介绍点简单的概念:
space:这是一个虚拟出物理空间,所有刚体(body),形状(shape),连接(joint)都在这个空间里发生物理事件.
body:刚体.在物理上,刚体是被抽象为一个物理例子实体单元去看待的,但是它不同与真正的粒子,因为刚体可以有形状(shape)并且可以旋转.另 外,刚体上附带着最基本的物理属性:
shape:刚体的形状.刚体间发生碰撞,是以刚体的形状外延为碰撞临界的.一个刚体可以附加多个shape形成复杂的刚体外形.同属于一个刚体的形状之 间不会发生碰撞.
joint:连接,两个以上的刚体连接在一起,比如一条锁链,是由多个刚体的铁环组成的.具体joint的使用,暂时还没深入研究.
Chipmunk是怎样工作的?
Chipmunk在一个“虚拟的Chipmunk空间”中模拟了物理行为。而你需要做的是:
在这个空间内添加物体。
例如:表示动物,花朵或者布偶的形状。
告诉Chipmunk这些物体上受到了哪些力的作用。
例如:重力,风,外星人的引力光线,等等。
偶尔给Chipmunk一段时间来更新模拟结果。
例如:Chipmunk可能会运算出一个动物相比上个时刻掉落了一段距离,一朵鲜花在风中微微倾斜,Gonzo可能被拉向空中。
根据物理模拟的结果更新你“真实”的Cocos2D世界。
例如:设置你的动物,鲜花,或者布偶精灵的位置,使它们与Chipmunk模拟的虚拟物体位置相同。
上面需要理解的最关键的点是:Chipmunk空间和Cocos2D空间完全不同。
Bodies and Shapes 刚体和形状
在你深入研究代码之前,还有一点需要理解:Chipmunk的刚体和形状的概念。
一个Chipmunk刚体代表了Chipmunk虚拟世界中的一个物体。刚体可以包含一个或多个Chipmunk形状来表示其几何定义,如下图所示。
这幅图展示了我们用来表示猫咪床的Chipmunk刚体。它包含三个Chipmunk形状——床的左侧部分,右侧部分和床的底部。
有两种Chipmunk刚体:
动态刚体是可以移动的——大多数情况下会用到。
静态刚体永远不会移动——它们通常被用于制作游戏中的地面和其它永久静止的装置。
对于每个Chipmunk刚体,你可以定义它的质量。质量越大,它移动起来就越困难,并且变的很重。
当你创建形状时,你可以制定它们是矩形盒,圆形,多边形,段落(有厚度的直线段)。对于每个形状,你可以设定下面一些属性:
弹性:代表物体的弹力如何。如果设置为0,它就一点弹性没有。如果设置为1,物体会以相同的反弹力回弹。如果设置大于1,那么会以更大的力回弹!
摩擦:表示物体有多滑。如果设置为0,它就会相当光滑。如果设置为1或更高,那么它就一点都不滑。
Cocos2d-x Chipmunk示例代码概览
这是你第一次看到如何向Chipmunk场景中添加物体,因此,让我们一段一段地学习。
创造一些墙,确保物体不会掉出屏幕。
向Chipmunk空间添加各种形状。
设定触摸事件,实现点击屏幕时可以添加精灵。
下面的工程在cocos2d-x的示例工程中被命名为ChipmunkTest。
创建