刚体组件

    刚体组件用于控制模拟相关的部分属性:

    点击 属性检查器 下方的 添加组件 -> Physics -> RigidBody,即可添加刚体组件到节点上。

    刚体的 API 接口请参考 Class RigidBody

    刚体类型

    目前刚体类型包括 STATICDYNAMICKINEMATIC 三种。

    • STATIC,表示静态刚体,可用于描述静止的建筑物,若物体需要持续运动,应设置为 KINEMATIC 类型;
    • DYNAMIC,表示动力学刚体,能够受到力的作用,请通过物理规律来运动物体,并且请保证质量大于 0;
    • KINEMATIC,表示运动学刚体,通常用于表达电梯这类平台运动的物体,请通过 Transfrom 控制物体运动;

    目前质心固定在刚体组件绑定的节点上,质心和碰撞体是相对关系。通过调整形状的偏移 center,可以使质心在形状上进行偏移。

    质心

    休眠和唤醒

    休眠刚体

    休眠刚体时,会将刚体所有的力和速度清空,使刚体停下来。

    1. rigidBody.sleep();
    2. }

    唤醒刚体

    针对不同的类型,让刚体运动的方式不同:

    对于静态刚体,应当尽可能保持物体静止,但仍然可以通过 Transform 来改变物体的位置。 对于运动学刚体,应当通过改变 Transform 使其运动。 对于动力学刚体,需要改变其速度,有以下几种方式:

    刚体组件提供了 useGravity 属性,将 useGravity 属性设置为 true

    通过施加力

    applyForce (force: Vec3, relativePoint?: Vec3)

    根据牛顿第二定律,可对刚体某点上施加力来改变物体的原有状态。

    通过扭矩

    力与冲量也可以只对旋转轴产生影响,使刚体发生转动,这样的力叫做扭矩。

    刚体组件提供了 applyTorque 接口,签名为:

    applyTorque (torque: Vec3)

    通过此接口可以施加扭矩到刚体上,因为只影响旋转轴,所以不需要指定作用点。

    刚体组件提供了 applyImpulse 接口,签名为:

    applyImpulse (impulse: Vec3, relativePoint?: Vec3)

    根据动量守恒,对刚体某点施加冲量,由于物体质量恒定,从而使刚体改变原有状态。

    通过改变速度

    • 线性速度

      刚体组件提供了 setLinearVelocity 接口,可用于改变线性速度,签名为:

      setLinearVelocity (value: Vec3)

      1. rigidBody.setLinearVelocity(new Vec3(5, 0, 0));

      刚体组件提供了 setAngularVelocity 接口,可用于改变旋转速度,签名为:

      示例:

    限制刚体的运动

    通过休眠

    休眠刚体时,会将刚体所有的力和速度清空,使刚体停下来。

    刚体组件提供了 linearDampingangularDamping 属性:

    • linearDamping 属性用于设置线性阻尼。

    • angularDamping 属性用于设置旋转阻尼。

    阻尼参数的范围建议在 01 之间,0 意味着没有阻尼,1 意味着满阻尼。

    :执行部分接口,例如施加力或冲量、改变速度、分组和掩码会尝试唤醒刚体。

    通过因子

    刚体组件提供了 linearFactorangularFactor 属性:

    • linearFactor 属性用于设置线性因子。
    • angularFactor 属性用于设置旋转因子。

    因子是 Vec3 的类型,相应分量的数值用于缩放相应轴向的速度变化,默认值都为 1,表示缩放为 1 倍,即无缩放。

    注意

    1. 将因子某分量值设置为0,可以固定某个轴向的移动或旋转。