约束管理器 - MRTK2
约束管理器允许将一组约束组件应用于转换。 可以考虑附加到游戏对象的类型的 TransformConstraint
组件。
默认情况下,约束管理器会自动收集附加到游戏对象的所有 约束组件 ,并将其应用于已处理的转换。
但是,用户可以选择手动配置应用的约束列表,并且只允许应用附加约束的子集。
目前,以下 MRTK UX 元素支持约束管理器:
检查器属性和字段
约束管理器可在两种模式下作:
- 自动约束选择
- 手动选择约束
自动约束选择
![自动选择](../images/constraint-manager/autoselection.png?view=mrtkunity-2022-05)
约束管理器的默认模式(自动约束选择)将提供所有附加约束组件的列表,以及 转到按钮 和 添加约束按钮。
向游戏对象添加约束
此按钮允许直接从约束管理器检查器添加约束组件。 项目中的所有约束类型都应在此处可见。 有关详细信息 ,请参阅转换约束 。
转到组件
对象上找到的所有约束都将在此处列出,并带有“ 转到组件 ”按钮。 此按钮将导致检查器滚动到选定的约束组件,以便可以对其进行配置。
手动选择约束
![手动选择](../images/constraint-manager/manualselection.png?view=mrtkunity-2022-05)
如果约束管理器设置为手动模式,则仅处理约束列表中链接的约束并将其应用于转换。 显示的列表仅显示用户选择的约束,以及转到用于删除或添加条目 的按钮 或选项。 首次启用手动模式时,约束管理器将填充所有可用组件的列表,作为选择附加约束组件的起点。
删除条目
这会从手动选择的列表中删除条目。 请注意,此选项不会从游戏对象中删除约束组件。 始终需要手动删除约束组件,以确保不会意外中断引用此组件的任何其他组件。
添加条目
添加项将打开一个下拉列表,其中显示尚未在手动列表中的所有可用约束组件。 通过单击任何条目,组件将添加到手动约束选择中。
添加新约束
此选项会将所选类型的组件添加到游戏对象,并将新创建的约束组件添加到手动约束列表。
转换约束
约束可用于以某种方式限制作。 例如,某些应用程序可能需要旋转,但也要求对象保持直立。 在这种情况下, RotationAxisConstraint
可以将 添加到 对象,并用于将旋转限制为 y 轴旋转。 MRTK 提供了许多约束,所有这些约束如下所述。
还可以定义新的约束,并使用它们来创建某些应用程序可能需要的唯一作行为。 为此,请创建一个从 继承 TransformConstraint
并实现 abstract ConstraintType
属性和 abstract ApplyConstraint
方法的脚本。 向 对象添加新约束后,它应按定义的方式约束作。 此新约束还应显示在手动模式下的约束管理器 自动选择 或 添加条目 下拉列表中。
MRTK 提供的所有约束共享以下属性:
手部类型
指定约束是用于单手作、双手作还是两种作。 由于此属性是一个标志,因此可以选择这两个选项。
- 单手作:如果选中,将在单手作期间使用约束。
- 双手:如果选中,将在双手作期间使用约束。
邻近感应类型
指定约束是用于近、远还是两种作。 由于此属性是一个标志,因此可以选择这两个选项。
- 近距:如果选择了约束,则将在近距作期间使用约束。
- 远:如果选择了“远距作”,则将使用约束。
FaceUserConstraint
![约束人脸用户](../images/object-manipulator/mrtk_constraint_faceuser.gif?view=mrtkunity-2022-05)
将此约束附加到对象时,旋转将受到限制,以便该对象将始终面对用户。 这对于板或面板很有用。 的属性 FaceUserConstraint
如下所示:
面孔离开
如果为 true,则对象与用户远离。
FixedDistanceConstraint
![约束 固定距离](../images/object-manipulator/mrtk_constraint_fixeddistance.gif?view=mrtkunity-2022-05)
此约束固定作开始时作对象与另一个对象转换之间的距离。 这对于固定从作对象到头部转换的距离等行为非常有用。 的属性 FixedDistanceConstraint
如下所示:
约束转换
这是作对象将具有固定距离的另一个转换。 默认为相机转换。
FixedRotationToUserConstraint
![固定旋转](../images/object-manipulator/mrtk_constraint_fixedrotationtouser.gif?view=mrtkunity-2022-05)
此约束修复了在作用户和作对象之间的相对旋转。 这对于板或面板非常有用,因为它可确保作的对象始终向用户显示与作开始时相同的人脸。 没有任何 FixedRotationToUserConstraint
唯一属性。
FixedRotationToWorldConstraint
![固定旋转到世界](../images/object-manipulator/mrtk_constraint_fixedrotationtoworld.gif?view=mrtkunity-2022-05)
此约束修复了作对象时所作对象的全局旋转。 在不应通过作传递任何旋转的情况下,这很有用。 没有任何 FixedRotationToWorldConstraint
唯一属性:
MaintainApparentSizeConstraint
![保持明显大小](../images/object-manipulator/mrtk_constraint_maintainapparentsize.gif?view=mrtkunity-2022-05)
当此约束附加到对象时,无论对象离用户有多远,它都将保持与用户相同的明显大小 (即它将占用用户视野) 的相同比例。 这可用于确保板或文本面板在作时保持可读性。 没有任何 MaintainApparentSizeConstraint
唯一属性:
MoveAxisConstraint
![约束移动轴](../images/object-manipulator/mrtk_constraint_moveaxis.gif?view=mrtkunity-2022-05)
此约束可用于固定可沿哪些轴移动作对象。 这对于在平面表面或沿线条作对象非常有用。 的属性 MoveAxisConstraint
如下所示:
移动约束
指定要阻止移动的轴。 默认情况下,这些轴将是全局轴,而不是局部轴,但可以在下面进行更改。 由于此属性是一个标志,因此可以选择任意数量的选项。
- X 轴:如果选中,则沿 x 轴移动受约束。
- Y 轴:如果选择,则限制沿 y 轴移动。
- Z 轴:如果选中,则沿 Z 轴移动受约束。
将本地空间用于约束
如果为 true,将相对约束作对象的局部转换轴。 默认值为 False。
RotationAxisConstraint
![约束旋转轴](../images/object-manipulator/mrtk_constraint_rotationaxis.gif?view=mrtkunity-2022-05)
此约束可用于修复可旋转纵对象的轴。 例如,这对于使作的对象保持直立,但仍允许 y 轴旋转非常有用。 的属性 RotationAxisConstraint
如下所示:
旋转约束
指定要阻止旋转的轴。 默认情况下,这些轴将是全局轴,而不是局部轴,但可以在下面进行更改。 由于此属性是一个标志,因此可以选择任意数量的选项。
- Y 轴:如果选中,则限制 y 轴的旋转。
- Z 轴:如果选中,则约束 Z 轴的旋转。
- X 轴:如果选中,则对 x 轴的旋转进行约束。
将本地空间用于约束
如果为 true,将相对约束作对象的局部转换轴。 默认值为 False。
MinMaxScaleConstraint
![Min Max Constatint](../images/object-manipulator/mrtk_constraint_minmaxscale.gif?view=mrtkunity-2022-05)
此约束允许为所作对象的刻度设置最小值和最大值。 这对于防止用户缩放对象太小或过大非常有用。 的属性 MinMaxScaleConstraint
如下所示:
最小缩放
作期间的最小刻度值。
缩放最大值
作期间的最大缩放值。
相对于初始状态
如果为 true,则上述值将解释为相对于对象初始小数位数。 否则,它们将被解释为绝对刻度值。