box2dWeb 学习笔记

本文介绍了如何使用Box2D物理引擎创建世界和刚体,包括设置重力、定义刚体状态及属性等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

 

创建世界

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 中的属性  
activeBoolean 可用与否
allowSleep Boolean 允许睡眠与否
awakeBoolean 活动与否
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的角度 角速度类属性:

 

 

 

    

转载于:https://www.cnblogs.com/chocho/p/4693529.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值