跳到主要内容

关节

Joint 组件约束两个刚体,或将一个刚体约束到世界空间中的固定点。

Alpha 阶段

关节组件仍处于 Alpha 阶段,其行为和 API 可能变化。编辑器从 2.32 起提供对应检查器。

前提条件​

Joint 组件由 Ammo 物理后端驱动,需要满足两个条件才能工作:

  • 项目中必须导入 Ammo。 未导入时,组件面板会显示 Ammo module not found 警告及导入按钮。添加方法详见物理。
  • 两个被引用的实体都需要刚体组件,且各自需要 Collision 组件定义形状。

将 Entity B 留空,可将 Entity A 约束到世界空间固定点,而非另一个刚体。

关节类型​

Type 选择固定、球形、铰链、滑动或六自由度关节。检查器中的选项分别为 Fixed、Ball、Hinge、Slider 和 6DoF。

类型决定其余哪些字段可见,切换类型时面板也会变化:

类型额外字段
Fixed无,仅包含始终显示的属性。
BallEnable Limits,启用后显示摆动和扭转限制。
HingeEnable Limits、Limits、Motor Speed、Max Motor Force。
SliderEnable Limits、Limits、Motor Speed、Max Motor Force。
6DoF各轴的线性和角运动、限制及弹簧字段。

从编辑器启动的木板链条,每块木板通过关节连接到下一块。

属性​

始终显示​

属性说明
类型(Type)选择固定、球形、铰链、滑动或六自由度关节。
实体 A(Entity A)第一个受约束实体,必须具有刚体组件。
实体 B(Entity B)第二个受约束实体。留空时将实体 A 约束到世界空间。
启用碰撞(Enable Collision)允许两个受约束刚体彼此碰撞。
断裂冲量(Break Impulse)超过此冲量时关节断裂。留空表示不可断裂。

限制​

Ball、Hinge 和 Slider 类型会显示 Enable Limits。

属性说明
启用限制(Enable Limits)启用已配置的铰链、滑动或球形关节限制。

铰链与滑动关节​

Motor Speed 和 Max Motor Force 不依赖 Enable Limits。

属性说明
限制(Limits)铰链角度或滑动距离的上下限,仅在启用 Enable Limits 时显示。
电机速度(Motor Speed)铰链目标角速度或滑动目标线速度。
最大电机力(Max Motor Force)电机最大作用力或力矩,设为 0 可禁用电机。

球形关节​

仅在启用 Enable Limits 时显示。

属性说明
Y 摆动限制(Swing Limit Y)球形关节向 Y 轴摆动的最大角度,单位为度。
Z 摆动限制(Swing Limit Z)球形关节向 Z 轴摆动的最大角度,单位为度。
扭转限制(Twist Limit)球形关节绕 X 轴扭转的最大角度,单位为度。

六自由度​

此类型用逐轴网格替代上述字段,分别设置 X、Y、Z 上的线性与角运动。

属性说明
线性运动(Linear Motion X / Y / Z)选择各轴平移为锁定、受限或自由。
线性限制(Linear Limits X / Y / Z)对应轴平移受限时使用的上下限。
线性刚度(Linear Stiffness)X、Y、Z 轴线性弹簧的刚度。
线性阻尼(Linear Damping)X、Y、Z 轴线性弹簧的阻尼。
线性平衡位置(Linear Equilibrium)X、Y、Z 轴线性弹簧的静止位置。
角运动(Angular Motion X / Y / Z)选择绕各轴旋转为锁定、受限或自由。
角度限制(Angular Limits X / Y / Z)对应轴旋转受限时使用的上下限。
角刚度(Angular Stiffness)绕 X、Y、Z 轴角弹簧的刚度。
角阻尼(Angular Damping)绕 X、Y、Z 轴角弹簧的阻尼。
角平衡位置(Angular Equilibrium)绕 X、Y、Z 轴角弹簧的静止角度。

只有对应的 Motion 设为 Limited 时,才会显示 Limits。

另请参阅​

脚本接口​

可以通过 Script 组件控制 Joint 组件属性。接口详见 JointComponent。

通过脚本修改关节时,请注意以下行为:

  • 设置 type 会销毁并重建约束,同时清除断裂标记,但不会将已分离的刚体拉回到一起。
  • 设置 swingLimitY 等限制会调用约束的限制更新,因此可在应用运行时实时调整。