Box学习

Box2D源码分析(刚体属性)

2021-10-02  本文已影响0人  大旺旺的弟弟小旺旺

上一讲看到了刚体属性,以及刚体的形状和创建过程,可以做自由下落,最后知道怎样显示出视图。这一节完成一些特殊的效果。
属性的两个属性类:bodyDef和fixtureDef,包含了所有的属性,对刚体的操作也是在这些属性上完成的。本章主要介绍属性的使用。

BodyDef

它包含了位置,类型,线速度。角速度等,属性分类:

状态类属性

active
刚体是不是处于激活状态,如果是false,那么在模拟的过程中就会被忽略掉,一般的如果超出渲染范围的可以设置为false .
举例子:如果某个刚体被设置为false,上面下落一个物体就直接穿堂而过,不进行任何的模拟操作;
awake
当前是不是处于唤醒状态,物体在运行的过程中,精致 的时候会标记为睡眠,发生碰撞的时候就会唤醒。一般的时候是不需要进行设置的,他一般的会进行自己操作的。
allowSleep
是否可以睡眠,默认为true,allowSleep和world中的一样,只不过作用的范围不同。
Bullet
是否模拟高速的子弹,开启CCD碰撞,默认是false,这个是为了防止高速运动的物体发生碰撞,容易穿透而设定的,需要比较大的运算开支,所以开启的不易太多。

角度、角速度类属性

angle:刚体的角度,是一个弧度值,转换关系:1弧度 = 180 / Math.PI。
angularVelocity:刚体的角速度 单位为弧度/秒,所以使用的时候需要进行转换,比较熟悉的单位通常是度/帧。假如渲染帧fps,那么弧度/秒和度/帧的关系如下:
弧度:1rad
秒:1s
弧度/秒:1rad/s
度:180/Math.PI
帧:fps
度/帧 :180/Math.PI / fps

image.png
旋转点:围绕中心,旋转中心,一般的就是刚体重心的坐标点,也可以进行修改,比如不倒翁。
angularDamping角速度阻尼,旋转摩擦力。他的范围是0~1之间,取值越大角速度降低的越快。
比如旋转加上阻尼就会很快的慢下来。
inertiaScale:角速度惯性系数,它可以为非负数,质量越大,惯性越大,移动的速度和角度也很难改变。质量只会影响惯性系数,旋转的惯性剋通过设置,角速度惯性系数越大,角速度变化的就越慢,如果角速度的惯性系数为0,那么角度就会一直保持不变。
fixedRotation:是否禁止旋转,刚体发生碰撞后不发生改变

坐标 速度类属性

其他属性

type:静态 动态 可动

bullet只会针对动态刚体有效果,静态的刚体和可动的刚体默认都是按照true设置的会进行连续检测。这也就是可以穿过障碍物,但是不会穿过墙

如果在运行的过程中突然改变刚体的类型,那么就会立即停止,就像冻住了一样。

FixtureDef

主要 保存了刚体特性方面的属性,比如密度、表面摩檫力、弹性系数等
分类可以分为:

上一篇 下一篇

猜你喜欢

热点阅读