Version: 6000.3
语言: 中文
预制件实例检查器参考
瞄准约束组件

约束

约束组件链接游戏对象Unity 场景中的基本对象,可以表示角色、道具、风景、相机、航路点等。游戏对象的功能由附加到它的组件定义。更多信息
请参阅术语表
到另一个游戏对象。受约束的游戏对象会像链接到的游戏对象一样移动、旋转或缩放。

Unity 支持以下类型的 Constraint 组件:

  • 瞄准:旋转受约束的游戏对象以面向链接的游戏对象。

  • 查看:将受约束的游戏对象旋转到链接的游戏对象(简化的瞄准约束)。

  • 父级:使用链接的游戏对象移动和旋转受约束的游戏对象。

  • 位置:移动受约束的游戏对象,就像链接的游戏对象一样。

  • 旋转:旋转受约束的游戏对象,就像链接的游戏对象一样。

  • 缩放:缩放受约束的游戏对象,就像链接的游戏对象一样。

链接到游戏对象

使用 Constraint 组件中的 Sources 列表指定要链接到的游戏对象。

例如,要在 2D 射击游戏中使十字准线跟随玩家的宇宙飞船,请向十字准线添加 位置约束(Position Constraint) 组件。要将十字准线链接到宇宙飞船,请导航到 Position Constraint 组件,并将宇宙飞船 GameObject 添加到 Sources 列表中。当玩家移动宇宙飞船时,十字准线也会随之而来。

十字准线的位置约束。十字准线跟随玩家的宇宙飞船(红色)。
十字准线的位置约束。十字准线跟随玩家的宇宙飞船(红色)。

一个约束可以链接到多个源游戏对象。在这种情况下,约束使用其源游戏对象的平均位置、旋转或缩放。例如,要将光源指向一组游戏对象,请将 Aim Constraint 组件添加到光源游戏对象。然后,在“源”列表中添加要照明的游戏对象。瞄准约束(Aim Constraint) 将光源定向为面向其光源的平均位置。

Unity 按照源游戏对象在“源”列表中的显示顺序计算源游戏对象。该顺序对“位置”“缩放约束”没有影响。但是,秩序对父级层次结构中包含子对象的对象。当一个游戏对象是另一个游戏对象的父级时,子游戏对象将与其父级完全一样移动、旋转和缩放。你可以把养育孩子想象成你的手臂和你的身体之间的关系;每当你的身体移动时,你的手臂也会随之移动。更多信息
请参阅术语表
旋转瞄准约束。要获得所需的结果,请通过拖放项目重新排序源列表。

您可以约束一系列游戏对象。例如,您希望小鸭子连续跟随它们的母亲。将 Position Constraint 组件添加到 GameObject Duckling1。在“来源”列表中,您链接到 MotherDuck。然后,向 Duckling2 添加一个位置约束,该约束链接到 Duckling1。当 MotherDuck 游戏对象在场景场景包含游戏的环境和菜单。将每个唯一的场景文件视为一个独特的关卡。在每个场景中,你放置你的环境、障碍物和装饰品,基本上是将你的游戏设计和构建成碎片。更多信息
请参阅术语表
Duckling1 跟随 MotherDuck,Duckling2 跟随 Duckling1

避免创建约束循环,因为这会导致游戏过程中不可预测的更新。

设置约束属性

使用 Inspector 窗口更改约束中的公共属性。

位置约束的权重和约束设置
位置约束的权重和约束设置

使用 权重(Weight) 来改变约束的影响。权重为 1 会导致 Constraint 以与其源游戏对象相同的速率更新游戏对象。权重为 0 将完全消除约束的影响。每个源游戏对象也都有一个单独的权重。

约束设置(Constraint Settings) 中,使用 静止(At Rest) 属性指定当 权重(Weight) 为 0 或未选中 冻结轴(Freeze Axes) 中的相应属性时要使用的 X、Y 和 Z 值。

使用 Constraint Settings 中的 Offset 属性指定约束游戏对象时要使用的 X、Y 和 Z 值。

使用 冻结轴(Freeze Axes) 设置来切换约束可以实际修改的轴。

激活和锁定约束

使用约束有两个方面:激活和锁定。

激活 Constraint 以允许它评估受约束的游戏对象的位置、旋转或缩放。Unity 不会评估非活动约束。

您可以锁定 Constraint 以允许其移动、旋转或缩放游戏对象。锁定的 Constraint 控制游戏对象变的相关部分。您无法使用锁定的 Constraint 手动移动、旋转或缩放游戏对象。您也无法编辑 Constraint Settings

要手动编辑游戏对象的位置、旋转或缩放,请解锁其约束。如果约束在解锁时处于活动状态,则约束会在您移动、旋转或缩放受约束的游戏对象或其源游戏对象时为您更新约束设置

当您将 Constraint 组件添加到游戏对象时,默认情况下,Constraint 处于非活动状态并处于解锁状态。这使您可以在激活和锁定 Constraint 之前微调受约束和源游戏对象的位置、旋转和缩放。

为方便起见,激活(Activate)归零(Zero) 按钮会为你更新约束设置

  • 激活保存源游戏对象的当前偏移量,然后激活并锁定受约束的游戏对象

  • :重置位置、旋转或缩放以匹配源游戏对象,然后激活并锁定受约束的游戏对象。

动画和组合约束

动画剪辑可用于动画角色或简单动画的动画数据。它是一个简单的“单位”运动片段,例如(一个特定实例)“空闲”、“步行”或“运行”。更多信息
请参阅术语表
以修改受约束的游戏对象链接到的源游戏对象。当动画修改源游戏对象时,约束会修改受约束的游戏对象。

您还可以在约束组件中对属性进行动画处理。例如,使用 父约束(Parent Constraint) 将角色的剑从手上移到背上。首先,将父约束添加到剑游戏对象。在 源(Sources) 列表中,将 约束(Constraint) 链接到角色的手和角色的脊柱。要为剑设置动画,请添加关键帧标记动画中过渡的起点或终点的帧。关键帧之间的帧称为中间帧。
请参阅术语表
对于每个来源的重量。要使剑从背部移动到手部移动动画,请添加关键帧以将手的重量从 0 更改为 1,并将脊柱重量的关键帧从 1 更改为 0。

您可以向同一游戏对象添加多种约束组件。更新游戏对象时,Unity 会从头到尾计算 Constraint 组件,因为它们出现在 Inspector 窗口中。一个游戏对象只能包含一个同类的约束组件。例如,不能添加多个位置约束。

导入约束

将FBX文件从Autodesk® Maya®和MotionBuilder®导入Unity编辑器时,可以包含约束。点击 导入设置(Import Settings) 窗口的 动画(Animation) 选项卡,然后选中 导入约束(Import Constraints):

选中导入约束的导入设置
选中导入约束的导入设置

对于 FBX 文件中的每个约束,Unity 会自动添加相应的 Constraint 组件并将其链接到正确的游戏对象。

添加和编辑约束

要添加约束组件:

  1. 选择要约束的游戏对象。

  2. 检查器一个 Unity 窗口,显示有关当前选定游戏对象、资产或项目设置的信息,允许您检查和编辑值。更多信息
    请参阅术语表
    窗口中,单击“添加组件”,搜索要添加的约束类型,然后单击它进行添加。

  3. 若要将源游戏对象添加到新约束,请将该游戏对象从“层次结构”(或“场景”视图)拖到“源”列表中。

  4. 移动、旋转或缩放受约束的游戏对象及其源游戏对象。

  5. 要激活约束,请单击激活或归零,或选中处于活动状态锁定

要编辑约束组件:

  1. 在编辑器中选择受约束的游戏对象。

  2. 要调整 静止(At Rest) 或 偏移(Offset) 字段,请使用检查器窗口展开 约束设置(Constraint Settings),取消选中 锁定(Lock),然后编辑值。

  3. 要指定约束更新的轴,请展开约束设置,然后检查冻结轴中的属性。

  4. 要将源游戏对象添加到约束,请执行以下作:

    • 如果“源”列表中没有空槽,请单击列表底部的 +。

    • 将要用作约束源的游戏对象从场景拖到“源”列表中。

  5. 要删除源游戏对象,请在“源”列表中选择它,然后单击列表底部的减号 (-)。

  6. 若要对列表中的源游戏对象重新排序,请单击要移动的每个游戏对象左侧的双栏图标,然后向上或向下拖动。

    注意:“源”列表中,顺序对“位置”、“旋转”和“缩放”没有影响 约束。但是,顺序确实会影响父约束和瞄准约束移动或旋转的方式 GameObject 的 GameObject 中。

  7. 检查处于活动状态锁定


  • 2018–04–11 页面已发布

  • 2018.1 中添加的约束NewIn20181

预制件实例检查器参考
瞄准约束组件