每个Box2D程序都将从一个世界对象的创建开始。他是管理对象以及模拟的中心。
}
创建世界对象b2World,
(1)首先应当创建包围和盒对象b2AABB。他的大小是越大越好。
因为当刚体碰到包围盒的边缘的时候他会停止模拟。
(2)创建世界中的重力场。他是一个2维的适量b2Vec2。
(3)当物体停止移动的时候,让物体停止模拟。节约资源doSleep。
以上这3个的确定都是初始化world对象所必须的。到此就创建了一个有一定的大小以及一定的重力场的空间,有了就可以往里面装东西了。
创建刚体b2Body,
(1)刚体的是由世界对象来创建的
其中的参数bodyDef是b2BodyDef创建的,是对body的defination.
bodyDef.position.Set(0,4);
他主要是用于初始化刚体在世界空间里的一些属性。包括位置(position)、质量(mass)、旋转角度(angle)等。
现在我们已经创建了一个刚体,并确定了他在世界空间当中的位置。物体到底是什么样的,以及他的物理属性怎么样是我么马上就要创建的。
(2)给物体定义形状以及物理材质
其中的初始参数shapeDef是b2ShapeDef
2
3
4
b2PolygonDef是继承自b2ShapeDef
除了b2PolygonDef外还有b2CircleDef。
到现在我们的刚体依然是没的外观的,对其定义的shapeDef也只是对其封装了一些特殊的属性而已。
实际上定义刚体外观的是bodyDef(shapeDef也有这个属性)的userDate属性,他是*类型的。任何类型的对象都可以给他。我们现在需要用它来定义外观(形状)就将形状类或影片类的引用传给他就可以了。同时需要将userData加入到舞台的显示列表当中。
bodyDef.userData.width = rX * 2 * 30;
bodyDef.userData.height = rX * 2 * 30;
其中的physCircle是sharp类的自定义类。
来自官方的helloWorld源码:
其中的userData的对象都是在flash中定义影片剪辑导出类。