box2dWeb 学习笔记

 

 

创建世界

var myWorld = new b2World(gravity,doSleep);

gravity为重力 一个b2Vec2(向量) 新建 一个向量类:new b2Vec2(0 ,9.8) 垂直方向用9.8来模拟地球重力

doSleep 是否休眠静止物体 设置为true 可以减少运算开销

 

新建刚体

b2Body 刚体类

新建刚体无需直接用new来实例化b2Body类,而是通过另外2个类辅助类来间接的新建刚体 b2BodyDef and b2FixtrueDef   如:

 

 

var myWorld = new b2World(gravity,doSleep)

var bd= new b2BodyDef();

var bfd = new b2FixtrueDef();

var body1 = world.CreateBody(bd);

body1.CreateFixtrue(bfd);

 

 

b2BodyDef 用来保存刚体的状态,以及运动相关的信息 如刚体的类型 角速度 速度 阻尼等

b2FixtrueDef 刚体自身所固有的一些属性 比如密度 弹性系数 形状

 

这里当我们用CreateBody把bd对象添加到新建刚体后 bd就跟body1没有任何关系了 这个时候 我们无需新建bd 直接利用已有的bd,就可以来创建其他的body  (Fixtrue同理)

 

 下面记录下b2BodyDef b2FixtureDef 相关属性:

b2BodyDef 中的属性    
active Boolean  可用与否
allowSleep  Boolean  允许睡眠与否
awake Boolean  活动与否
bullet  Boolean  bullet
angle  Number  角度
angularDamping  Number  角速度阻尼
angularVelocity  Number  角速度
fixedRotation  Boolean  角度固定
inertiaScale  Number  角速度惯性系数
linearDamping  Number  线速度阻尼
linearVelocity  b2Vec2  线速度
position  b2Vec2  坐标
type  uint  类型
userData  自定义数据
b2FixtureDef 中的属性    
density  Number  密度
friction  Number  摩擦系数
restitution  Number  弹性系数
filter  b2FilterData  碰撞过滤
isSensor  Boolean  是否为传感器
shape  b2Shape  形状
userData  自定义数据
     
     

 

bodyDef的状态类属性:

bodyDef.position.Set(100/30,100/30);//刚体的位置设置

bodyDef.type = b2Body.b2_dynamicBody;//刚体类型  静态刚体:b2Body.b2_staticBody   可动刚体:b2Body.b2_dynamicBody      动态刚体:b2Body.b2_kinematicBody

bodyDef.active=false;刚体是否处于激活状态:如果为false 在更新的Bodylist 的时候 会直接跳过  可以通过body.SetActive(true)来修改其值  dody也有 IsActive()  来获取active

bodyDef.awake=false;刚体当前是否在唤醒状态 与active类似 暂时不只他们的区别

 以上三个属性的都可以修改 通过修改他们 可以实现停止或开始 运行相关刚体 

 allowSleep:Boolean :刚体是否可以睡眠,默认为 true。 针对当前的刚体  对应的方法 IsSleepingAllowed():Boolean ;SetSleepingAllowed(flag:Boolean):void。

 bullet:Boolean : 是否模拟高速子弹,开启 CCD 碰撞检测 ,默认为 false。 当运动速度很快的时候 刚体可能会穿透其他非静态刚体 ,开启bullet后 就不会出现出现这种类似bug的问题,但是他对性能的要求也更高  所以不宜开启过多的bullet刚体

 bodyDef的角度 角速度类属性:

 

 

 

    

posted @ 2015-08-18 18:01  chocho  阅读(375)  评论(0编辑  收藏  举报