约束管理器 - MRTK2

约束管理器允许将一组约束组件应用于转换。 可以考虑附加到游戏对象的类型的 TransformConstraint 组件。 默认情况下,约束管理器会自动收集附加到游戏对象的所有 约束组件 ,并将其应用于已处理的转换。 但是,用户可以选择手动配置应用的约束列表,并且只允许应用附加约束的子集。

目前,以下 MRTK UX 元素支持约束管理器:

检查器属性和字段

约束管理器可在两种模式下作:

  • 自动约束选择
  • 手动选择约束

自动约束选择

自动选择

约束管理器的默认模式(自动约束选择)将提供所有附加约束组件的列表,以及 转到按钮添加约束按钮

向游戏对象添加约束

此按钮允许直接从约束管理器检查器添加约束组件。 项目中的所有约束类型都应在此处可见。 有关详细信息 ,请参阅转换约束

转到组件

对象上找到的所有约束都将在此处列出,并带有“ 转到组件 ”按钮。 此按钮将导致检查器滚动到选定的约束组件,以便可以对其进行配置。

手动选择约束

手动选择

如果约束管理器设置为手动模式,则仅处理约束列表中链接的约束并将其应用于转换。 显示的列表仅显示用户选择的约束,以及转到用于删除或添加条目 的按钮 或选项。 首次启用手动模式时,约束管理器将填充所有可用组件的列表,作为选择附加约束组件的起点。

删除条目

这会从手动选择的列表中删除条目。 请注意,此选项不会从游戏对象中删除约束组件。 始终需要手动删除约束组件,以确保不会意外中断引用此组件的任何其他组件。

添加条目

添加项将打开一个下拉列表,其中显示尚未在手动列表中的所有可用约束组件。 通过单击任何条目,组件将添加到手动约束选择中。

添加新约束

此选项会将所选类型的组件添加到游戏对象,并将新创建的约束组件添加到手动约束列表。

转换约束

约束可用于以某种方式限制作。 例如,某些应用程序可能需要旋转,但也要求对象保持直立。 在这种情况下, RotationAxisConstraint 可以将 添加到 对象,并用于将旋转限制为 y 轴旋转。 MRTK 提供了许多约束,所有这些约束如下所述。

还可以定义新的约束,并使用它们来创建某些应用程序可能需要的唯一作行为。 为此,请创建一个从 继承 TransformConstraint 并实现 abstract ConstraintType 属性和 abstract ApplyConstraint 方法的脚本。 向 对象添加新约束后,它应按定义的方式约束作。 此新约束还应显示在手动模式下的约束管理器 自动选择添加条目 下拉列表中。

MRTK 提供的所有约束共享以下属性:

手部类型

指定约束是用于单手作、双手作还是两种作。 由于此属性是一个标志,因此可以选择这两个选项。

  • 单手作:如果选中,将在单手作期间使用约束。
  • 双手:如果选中,将在双手作期间使用约束。

邻近感应类型

指定约束是用于近、远还是两种作。 由于此属性是一个标志,因此可以选择这两个选项。

  • 距:如果选择了约束,则将在近距作期间使用约束。
  • :如果选择了“远距作”,则将使用约束。

FaceUserConstraint

约束人脸用户

将此约束附加到对象时,旋转将受到限制,以便该对象将始终面对用户。 这对于板或面板很有用。 的属性 FaceUserConstraint 如下所示:

面孔离开

如果为 true,则对象与用户远离。

FixedDistanceConstraint

约束 固定距离

此约束固定作开始时作对象与另一个对象转换之间的距离。 这对于固定从作对象到头部转换的距离等行为非常有用。 的属性 FixedDistanceConstraint 如下所示:

约束转换

这是作对象将具有固定距离的另一个转换。 默认为相机转换。

FixedRotationToUserConstraint

固定旋转

此约束修复了在作用户和作对象之间的相对旋转。 这对于板或面板非常有用,因为它可确保作的对象始终向用户显示与作开始时相同的人脸。 没有任何 FixedRotationToUserConstraint 唯一属性。

FixedRotationToWorldConstraint

固定旋转到世界

此约束修复了作对象时所作对象的全局旋转。 在不应通过作传递任何旋转的情况下,这很有用。 没有任何 FixedRotationToWorldConstraint 唯一属性:

MaintainApparentSizeConstraint

保持明显大小

当此约束附加到对象时,无论对象离用户有多远,它都将保持与用户相同的明显大小 (即它将占用用户视野) 的相同比例。 这可用于确保板或文本面板在作时保持可读性。 没有任何 MaintainApparentSizeConstraint 唯一属性:

MoveAxisConstraint

约束移动轴

此约束可用于固定可沿哪些轴移动作对象。 这对于在平面表面或沿线条作对象非常有用。 的属性 MoveAxisConstraint 如下所示:

移动约束

指定要阻止移动的轴。 默认情况下,这些轴将是全局轴,而不是局部轴,但可以在下面进行更改。 由于此属性是一个标志,因此可以选择任意数量的选项。

  • X 轴:如果选中,则沿 x 轴移动受约束。
  • Y 轴:如果选择,则限制沿 y 轴移动。
  • Z 轴:如果选中,则沿 Z 轴移动受约束。

将本地空间用于约束

如果为 true,将相对约束作对象的局部转换轴。 默认值为 False。

RotationAxisConstraint

约束旋转轴

此约束可用于修复可旋转纵对象的轴。 例如,这对于使作的对象保持直立,但仍允许 y 轴旋转非常有用。 的属性 RotationAxisConstraint 如下所示:

旋转约束

指定要阻止旋转的轴。 默认情况下,这些轴将是全局轴,而不是局部轴,但可以在下面进行更改。 由于此属性是一个标志,因此可以选择任意数量的选项。

  • Y 轴:如果选中,则限制 y 轴的旋转。
  • Z 轴:如果选中,则约束 Z 轴的旋转。
  • X 轴:如果选中,则对 x 轴的旋转进行约束。

将本地空间用于约束

如果为 true,将相对约束作对象的局部转换轴。 默认值为 False。

MinMaxScaleConstraint

Min Max Constatint

此约束允许为所作对象的刻度设置最小值和最大值。 这对于防止用户缩放对象太小或过大非常有用。 的属性 MinMaxScaleConstraint 如下所示:

最小缩放

作期间的最小刻度值。

缩放最大值

作期间的最大缩放值。

相对于初始状态

如果为 true,则上述值将解释为相对于对象初始小数位数。 否则,它们将被解释为绝对刻度值。