b2Body刚体

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
  • 它是Box2D中的一个物理模拟对象,不是可显示对象,但是可以通过b2DebugDraw来进行调试模拟
  • 它的计量单位是米m
  • 它通过b2World.createBody()来创建
B.        Sprite
  • 它是显示对象,通过addChild添加即可显示
  • 它的计量单位是像素px
  • 通过new来创建,然后addChild添加后直接显示在舞台上
刚体创建的过程,与AS中new一个对象,addChild到舞台中显示比起来要复杂很多,刚体的创建可以看做是一个工厂模式,根据你的需求(b2BodyDef)生产指定的刚体
b2World工厂.PNG 
刚体的创建过程可以分为两个步骤:
1.        创建刚体需求b2BodyDef。
  1. var bodyRequest:b2BodyDef = new b2BodyDef();
复制代码

在这个需求中,我们可以包括下面的内容:
a)        position:刚体的坐标位置,单位是米m
b)        angle:刚体的角度
c)        其他,在以后的学习中我们会陆续介绍
2.        b2World工厂用createBody方法创建刚体产品,并自动将其添加到Box2D世界中,然后返回该刚体。
  1. body=world.CreateBody(bodyRequest);
复制代码
定义刚体形状
到目前位置,我们已经成功添加了一个刚体。
讲个题外话,今天我同时的老婆生了,听到这个消息,你会问的第一个问题是什么?”男孩,女孩?”答对了!
把刚体当成我们的孩子吧。创建一个刚体后,你应该问什么?”方的,圆的?”(这孩子好挫啊!)非常正确。刚体的形状不是与生俱来的,需要用一个b2Shape的子类对象指定。刚体形状的创建过程同样也是一个工厂模式。
b2Body工厂.PNG 
这个创建过程与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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值