1.Box2D中的计量单位是米
在Box2D中的计量单位是米m,而不是Flash中的像素px,在布置坐标时,要进行一个转换,1米=30个像素。所以Box2D中(a,b)点对于Flash中的(a*30,b*30)的位置,或者说Flash中的(c,d)位置对应Box2D中的(c/30,d/30)位置。
2. Box2D用b2DebugDraw进行模拟调试
Box2D是一个物理引擎,不会向Flash显示列表中添加任何显示对象。不过Box2D中有一个b2DebugDraw类,可以绑定一个显示对象,进行模拟调试。
b2DebugDraw的用法:
- 创建一个空的Sprite对象debugSprite,并添加到舞台中
- 创建一个b2DebugDraw对象debugDraw,并设置它的m_sprite属性值为debugSprite.
- 用world的SetDebugDraw方法,绑定debugDraw
3.World的更新:
Box2D的和Flash一样,需要实时更新,Flash中有ENTER_FRAME,b2world有step,其参数一表示模拟的时长,二表示限制碰撞后检测程式运行的次数,防止死循环。
刚体与DisplayObject的区别
掉落的苹果实际上是Box2D里的一个刚体b2Body,当然可以把他理解成Flash中的sprite,不过:
A. b2Body
刚体的创建过程可以分为两个步骤:
1. 创建刚体需求b2BodyDef。
在这个需求中,我们可以包括下面的内容:
a) position:刚体的坐标位置,单位是米m
b) angle:刚体的角度
c) 其他,在以后的学习中我们会陆续介绍
2. b2World工厂用createBody方法创建刚体产品,并自动将其添加到Box2D世界中,然后返回该刚体。
定义刚体形状
到目前位置,我们已经成功添加了一个刚体。
讲个题外话,今天我同时的老婆生了,听到这个消息,你会问的第一个问题是什么?”男孩,女孩?”答对了!
把刚体当成我们的孩子吧。创建一个刚体后,你应该问什么?”方的,圆的?”(这孩子好挫啊!)非常正确。刚体的形状不是与生俱来的,需要用一个b2Shape的子类对象指定。刚体形状的创建过程同样也是一个工厂模式。
这个创建过程与b2Body的创建过程是一样的。我们的形状需求b2ShapeDef可以报考下面的内容:
a) density:质量
b) friction:表面摩擦力
c) restitution:表面张力,这个值越大,刚体越硬
d) SetAsBox:设置刚体为矩形
e) 其他,在以后的学习中我们会陆续介绍
好了创建b2Body刚体的完整过程就讲完了。我们在总结一下:
1. 创建刚体需求b2BodyDef
2. Box2D世界工厂根据需求用createBody方法创建刚体
3. 创建刚体形状需求b2ShapeDef的子类对象
4. B2Body工厂根据需求用createShape方法创建形状
- 它是Box2D中的一个物理模拟对象,不是可显示对象,但是可以通过b2DebugDraw来进行调试模拟
- 它的计量单位是米m
- 它通过b2World.createBody()来创建
- 它是显示对象,通过addChild添加即可显示
- 它的计量单位是像素px
- 通过new来创建,然后addChild添加后直接显示在舞台上
刚体的创建过程可以分为两个步骤:
1. 创建刚体需求b2BodyDef。
在这个需求中,我们可以包括下面的内容:
a) position:刚体的坐标位置,单位是米m
b) angle:刚体的角度
c) 其他,在以后的学习中我们会陆续介绍
2. b2World工厂用createBody方法创建刚体产品,并自动将其添加到Box2D世界中,然后返回该刚体。
定义刚体形状
到目前位置,我们已经成功添加了一个刚体。
讲个题外话,今天我同时的老婆生了,听到这个消息,你会问的第一个问题是什么?”男孩,女孩?”答对了!
把刚体当成我们的孩子吧。创建一个刚体后,你应该问什么?”方的,圆的?”(这孩子好挫啊!)非常正确。刚体的形状不是与生俱来的,需要用一个b2Shape的子类对象指定。刚体形状的创建过程同样也是一个工厂模式。
这个创建过程与b2Body的创建过程是一样的。我们的形状需求b2ShapeDef可以报考下面的内容:
a) density:质量
b) friction:表面摩擦力
c) restitution:表面张力,这个值越大,刚体越硬
d) SetAsBox:设置刚体为矩形
e) 其他,在以后的学习中我们会陆续介绍
好了创建b2Body刚体的完整过程就讲完了。我们在总结一下:
1. 创建刚体需求b2BodyDef
2. Box2D世界工厂根据需求用createBody方法创建刚体
3. 创建刚体形状需求b2ShapeDef的子类对象
4. B2Body工厂根据需求用createShape方法创建形状
本文引用来自:http://bbs.9ria.com/thread-132363-1-1.html