刚体组件
刚体组件用于控制模拟相关的部分属性:
点击 属性检查器 下方的 添加组件 -> Physics -> RigidBody,即可添加刚体组件到节点上。
刚体的 API 接口请参考 Class RigidBody。
刚体类型
目前刚体类型包括 STATIC、DYNAMIC 和 KINEMATIC 三种。
- STATIC,表示静态刚体,可用于描述静止的建筑物,若物体需要持续运动,应设置为 KINEMATIC 类型;
- DYNAMIC,表示动力学刚体,能够受到力的作用,请通过物理规律来运动物体,并且请保证质量大于 0;
- KINEMATIC,表示运动学刚体,通常用于表达电梯这类平台运动的物体,请通过 Transfrom 控制物体运动;
目前质心固定在刚体组件绑定的节点上,质心和碰撞体是相对关系。通过调整形状的偏移 center,可以使质心在形状上进行偏移。
休眠和唤醒
休眠刚体
休眠刚体时,会将刚体所有的力和速度清空,使刚体停下来。
rigidBody.sleep();
}
唤醒刚体
针对不同的类型,让刚体运动的方式不同:
对于静态刚体,应当尽可能保持物体静止,但仍然可以通过 Transform 来改变物体的位置。 对于运动学刚体,应当通过改变 Transform 使其运动。 对于动力学刚体,需要改变其速度,有以下几种方式:
刚体组件提供了 useGravity
属性,将 useGravity
属性设置为 true
。
通过施加力
applyForce (force: Vec3, relativePoint?: Vec3)
根据牛顿第二定律,可对刚体某点上施加力来改变物体的原有状态。
通过扭矩
力与冲量也可以只对旋转轴产生影响,使刚体发生转动,这样的力叫做扭矩。
刚体组件提供了 applyTorque
接口,签名为:
applyTorque (torque: Vec3)
通过此接口可以施加扭矩到刚体上,因为只影响旋转轴,所以不需要指定作用点。
刚体组件提供了 applyImpulse
接口,签名为:
applyImpulse (impulse: Vec3, relativePoint?: Vec3)
根据动量守恒,对刚体某点施加冲量,由于物体质量恒定,从而使刚体改变原有状态。
通过改变速度
线性速度
刚体组件提供了
setLinearVelocity
接口,可用于改变线性速度,签名为:setLinearVelocity (value: Vec3)
rigidBody.setLinearVelocity(new Vec3(5, 0, 0));
刚体组件提供了
setAngularVelocity
接口,可用于改变旋转速度,签名为:示例:
限制刚体的运动
通过休眠
休眠刚体时,会将刚体所有的力和速度清空,使刚体停下来。
刚体组件提供了 linearDamping 和 angularDamping 属性:
linearDamping
属性用于设置线性阻尼。angularDamping
属性用于设置旋转阻尼。
阻尼参数的范围建议在 0 到 1 之间,0 意味着没有阻尼,1 意味着满阻尼。
注:执行部分接口,例如施加力或冲量、改变速度、分组和掩码会尝试唤醒刚体。
通过因子
刚体组件提供了 linearFactor
和 angularFactor
属性:
linearFactor
属性用于设置线性因子。angularFactor
属性用于设置旋转因子。
因子是 Vec3
的类型,相应分量的数值用于缩放相应轴向的速度变化,默认值都为 1,表示缩放为 1 倍,即无缩放。
注意:
- 将因子某分量值设置为
0
,可以固定某个轴向的移动或旋转。