前面已经讲到形状和框架的含义,它们分别是用来进行碰撞检测和物理模拟的对象。到现在我们创建的物理世界当中,还未存在任何的物体。因此接下来的内容就介绍物理世界的主角:物体(Body)。它是构成世界的主要因素,因为不仅框架,形状会依附于物体,就连后面介绍的关节也是要绑定在物体之上的。
物体定义:
Box2D引擎的物体都为刚体,它的形状不为任何外力所改变。物体上面的任何两点之间的距离都是完全不变的。它具有质量和惯性。它的运动状态由重力和受力决定。它的动态移动由线速度和角速度控制。物体分3类:
(1)静态物体(b2_staticBody) 质量为0,在模拟时,静态不可移动,就好像它具有无穷大的质量。不过,静态物理可以让用户手动的移动,它速度为0。这也就是说其移动的位置由用户控制。另外,它也不会和其他静态或者平台物体相互碰撞。它常常被用来实现游戏中的地面,边界等元素。
(2)平台物体(b2_kinematicBody)是按照固定轨迹在做运动的物体,其质量也为0,与静态物体一样,平台物体也可以被用户移动。通常情况下开发者会预设一个速度。它也不会和其他的静态或者平台物体碰撞。平台物体常常用来表示游戏中的电梯、平台、桥等等。
(3)动态物体(b2_dynamicBody)是游戏中最常见的精灵对象对应的物体,具备质量、速度、摩擦等。它参与引擎当中的碰撞检测和物理模拟。它们可以让用户手动移动,但通常它们都是受力的作用而运动。动态物体可以与物理世界中任何对象发生碰撞。
上述物体的类型都可以被施加外力(forces)、扭阵(t