移动器约束

*此内容使用人工智能(Beta)翻译,可能包含错误。若要查看英文页面,请点按 此处

物理引擎包含以下 Constraints ,这些约束施加力或扭矩以移动一个或多个组件。此外,还提供各种 机械约束,它们充当概念上的机械连接,包括铰链、弹簧、绳索等。

线性速度

LinearVelocity 施加力在一个组件上以维持沿着 3D 向量、线或 2D 平面上的恒定速度
角速度

AngularVelocity 施加扭矩在一个组件上以维持恒定的角速度
对齐位置

AlignPosition 施加力以将两个附件移动在一起,或将一个附件移动到目标位置
对齐方向

AlignOrientation 施加扭矩以对齐两个附件,或将一个附件与目标方向对齐
向量力

VectorForce 在一个组件上施加恒定的线性力
扭矩

Torque 从其质心施加恒定的扭矩在一个组件上
线力

LineForce 沿着连接其两个附件的理论线施加力
动画约束

AnimationConstraint 通过偏移变换 CFrame 限制其 Attachments

约束可视化

要准确地在Studio中可视化约束,您可以从视图菜单或通过相应的快捷键切换以下内容:

  • 显示焊接 (AltWW) — 将WeldConstraints单独显示,而不是与其他约束的可视化混合在一起。
  • 显示约束细节 (AltDD) — 显示非焊接约束的完整可视化细节。

创建约束

移动器约束通常连接一个或两个 AttachmentsBones。当连接到 Bones 时,约束将使用它们的动画位置和方向。

要创建一个机械约束,您可以通过 约束 选择器/按钮或通过 资源管理器 窗口插入一个。

  1. 在 Studio 的 模型 选项卡工具栏中,按住鼠标点击约束按钮右上角的小箭头以打开其选择器菜单,然后选择所需的约束。

    Studio 工具栏中的约束选择器指示
  2. 在 3D 视口中,将鼠标悬停在任何 PartMeshPart 上并单击以在可视化点添加一个新的 Attachment 到该部件。或者,将鼠标悬停并单击一个现有的 AttachmentBone 以将其用于该约束。

  3. 一些移动器约束在其功能中利用或支持 第二个 附件,因此工具可能会提示您在另一个 PartMeshPartAttachmentBone 上重复上一步。

    使用一个附件的 AngularVelocity
    AngularVelocity 使用一个附件
    使用两个附件的 AlignPosition
    AlignPosition 使用两个附件

物理模拟

要在移动旋转部件时模拟物理效果,您可以在Studio的工具栏中从几何模式切换到物理模式,这样部件就会遵循物理限制。例如,如果两个部件通过RopeConstraint连接在一起,当您在场景中拖动一个部件时,另一个部件会随着绳索变紧而跟随。

旧版移动器转换

如果您的游戏依赖于基于旧版 BodyMover 的约束,请在转换为现代移动器约束时仔细阅读以下说明。

AlignPosition 满足了大多数由已弃用的 BodyPosition 移动器所涵盖的用例。为了与旧版移动器独立处理每个组件并允许沿每个维度施加不同力的方式同步,ForceLimitMode 属性允许约束在 Magnitude 模式或 PerAxis 模式下运行:

  • Magnitude 模式下,保留现有行为并将 MaxForce 视为一个大小。

  • PerAxis 模式下,可以独立指定沿每个轴的力。因为最大力被指定为一个向量,所以力的参考框架也可以通过 ForceRelativeTo 属性与 WorldAttachment0Attachment1 选项一起指定。此外,内部控制器的公式被修改以与 BodyPosition 的公式相匹配。

AlignOrientation 满足了大多数由已弃用的 BodyGyro 移动器所涵盖的用例。AlignType 模式为大多数应用提供了足够的自由度,同时多个约束的组合可以复制向量扭矩限制。此外, PrimaryAxisLookAt 模式强制约束的第一个附件 (Attachment0) 的主轴始终指向第二个附件 (Attachment1),使得添加运动跟踪安保摄像机或制导导弹等变得更加容易。

LinearVelocity 满足了大多数由已弃用的 BodyVelocity 移动器所涵盖的用例。尽管旧版移动器允许使用一个 MaxForce 向量,但该向量力的典型应用是将特定分量归零,从而允许该约束在该维度上被禁用。LinearVelocity 通过在不同的 VelocityConstraintMode 模式下运行来实现类似的效果,这些模式对应于一维(Line)、二维(Plane)和三维(Vector)。

此外,ForceLimitMode 属性中的 PerAxis 选项可以满足具有所有非零分量的向量力的任何应用,例如沿单个轴增加力以抵消重力。

尽管 AngularVelocity 与已弃用的 BodyAngularVelocity 移动器存在一些不一致,但社区内部并没有突出这些不一致相关的具体案例。

作为一个单独的改进,AngularVelocity 可以与 Attachments 一起使用,且 RelativeTo 属性允许您指定施加力的 CFrame,例如 WorldAttachment1

VectorForce 满足了已弃用的 BodyForceBodyThrust 移动器提供的所有用例。现代约束与 Attachments 一起工作,其 RelativeTo 属性允许您施加力到相对于中心的偏移,与 BodyThrust.Location 的工作方式相似。

LineForceAlignOrientation 的组合满足了大多数由已弃用的 RocketPropulsion 移动器所覆盖的用例。在制导导弹的例子中,LineForce 可以用于控制 RocketPropulsion 的“跟随目标”行为,而 AlignOrientation 及其 LookAtPosition 属性可以用于控制“面向目标”行为。

©2026 Roblox Corporation、Roblox、Roblox 标志及 Powering Imagination 是我们在美国及其他国家或地区的注册与未注册商标。