物理引擎包含以下 Constraints ,这些约束施加力或扭矩以移动一个或多个组件。此外,还提供各种 机械约束,它们充当概念上的机械连接,包括铰链、弹簧、绳索等。
约束可视化
要准确地在Studio中可视化约束,您可以从视图菜单或通过相应的快捷键切换以下内容:
- 显示约束细节 (AltD 或 ⌥D) — 显示非焊接约束的完整可视化细节。
创建约束
移动器约束通常连接一个或两个 Attachments 或 Bones。当连接到 Bones 时,约束将使用它们的动画位置和方向。
要创建一个机械约束,您可以通过 约束 选择器/按钮或通过 资源管理器 窗口插入一个。
在 Studio 的 模型 选项卡工具栏中,按住鼠标点击约束按钮右上角的小箭头以打开其选择器菜单,然后选择所需的约束。

在 3D 视口中,将鼠标悬停在任何 Part 或 MeshPart 上并单击以在可视化点添加一个新的 Attachment 到该部件。或者,将鼠标悬停并单击一个现有的 Attachment 或 Bone 以将其用于该约束。
一些移动器约束在其功能中利用或支持 第二个 附件,因此工具可能会提示您在另一个 Part、MeshPart 或 Attachment、Bone 上重复上一步。

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

旧版移动器转换
如果您的游戏依赖于基于旧版 BodyMover 的约束,请在转换为现代移动器约束时仔细阅读以下说明。
AlignPosition 满足了大多数由已弃用的 BodyPosition 移动器所涵盖的用例。为了与旧版移动器独立处理每个组件并允许沿每个维度施加不同力的方式同步,ForceLimitMode 属性允许约束在 Magnitude 模式或 PerAxis 模式下运行:
在 PerAxis 模式下,可以独立指定沿每个轴的力。因为最大力被指定为一个向量,所以力的参考框架也可以通过 ForceRelativeTo 属性与 World、Attachment0 和 Attachment1 选项一起指定。此外,内部控制器的公式被修改以与 BodyPosition 的公式相匹配。
AlignOrientation 满足了大多数由已弃用的 BodyGyro 移动器所涵盖的用例。AlignType 模式为大多数应用提供了足够的自由度,同时多个约束的组合可以复制向量扭矩限制。此外, PrimaryAxisLookAt 模式强制约束的第一个附件 (Attachment0) 的主轴始终指向第二个附件 (Attachment1),使得添加运动跟踪安保摄像机或制导导弹等变得更加容易。
LinearVelocity 满足了大多数由已弃用的 BodyVelocity 移动器所涵盖的用例。尽管旧版移动器允许使用一个 MaxForce 向量,但该向量力的典型应用是将特定分量归零,从而允许该约束在该维度上被禁用。LinearVelocity 通过在不同的 VelocityConstraintMode 模式下运行来实现类似的效果,这些模式对应于一维(Line)、二维(Plane)和三维(Vector)。
此外,ForceLimitMode 属性中的 PerAxis 选项可以满足具有所有非零分量的向量力的任何应用,例如沿单个轴增加力以抵消重力。
尽管 AngularVelocity 与已弃用的 BodyAngularVelocity 移动器存在一些不一致,但社区内部并没有突出这些不一致相关的具体案例。
作为一个单独的改进,AngularVelocity 可以与 Attachments 一起使用,且 RelativeTo 属性允许您指定施加力的 CFrame,例如 World 或 Attachment1。
VectorForce 满足了已弃用的 BodyForce 和 BodyThrust 移动器提供的所有用例。现代约束与 Attachments 一起工作,其 RelativeTo 属性允许您施加力到相对于中心的偏移,与 BodyThrust.Location 的工作方式相似。
LineForce 和 AlignOrientation 的组合满足了大多数由已弃用的 RocketPropulsion 移动器所覆盖的用例。在制导导弹的例子中,LineForce 可以用于控制 RocketPropulsion 的“跟随目标”行为,而 AlignOrientation 及其 LookAtPosition 属性可以用于控制“面向目标”行为。