使用动画过渡可将状态机从一个动画状态切换或混合到另一动画状态。过渡定义了状态之间的混合持续时间以及过渡发生时的条件。要设置这些条件,请在动画器控制器 (Animator Controller) 中指定参数值。
例如,您的角色可能具有“巡逻”状态和“睡眠”状态。您可以将巡逻和睡眠之间的过渡设置为仅在“alertness”参数值低于某个水平时才会发生。
要为过渡命名,请在以下字段中输入其名称:
检视面板窗口显示状态使用的过渡:
在给定时间只能激活一个过渡。但是,您可以配置这些设置,用另一个过渡来中断当前激活的过渡。请参阅过渡中断 (Transition interruption) 以了解更多信息。
要查看某个过渡的属性,请选择动画器 (Animator) 窗口中连接两个状态的过渡线。这些属性将显示在检视面板窗口中。
使用以下属性可调整过渡及其在当前状态和下一状态之间如何混合。
| 属性 | 功能 |
|---|---|
| Has Exit Time | Exit Time 是一种不依赖参数的特殊过渡。但是,它依赖状态的标准化时间。选中此选项可在 Exit Time 指定的具体时间进行过渡。 |
| Settings | 包含详细过渡设置的折叠菜单。下面将对每个过渡设置进行介绍。 |
| Exit Time | 如果选中 Has Exit Time,此值表示过渡可以生效的确切时间。该时间以标准化时间表示(例如,退出时间为 0.75 表示,在已播放 75% 动画的第一帧上,Exit Time 条件为 true)。在下一帧上,该条件为 false。 对于循环动画,每个循环都会评估退出时间小于 1 的过渡,因此可使用此选项在每个循环的动画中以适当时机对过渡进行计时。 对 Exit Time 大于 1 的过渡仅评估一次,因此此类过渡可用于在固定循环次数后的特定时间退出。例如,过渡的退出时间为 3.5 的情况下,在三个半循环后对该过渡评估一次。 |
| Fixed Duration | 如果选中 Fixed Duration 复选框,则以秒为单位解读过渡时间。如果未选中 Fixed Duration 复选框,则过渡时间解读为源状态的标准化时间的一部分。 |
| Transition Duration | 相对于当前状态持续时间的过渡持续时间,以标准化时间或秒为单位(具体取决于 Fixed Duration 模式)。此时间在过渡图中显示为两个蓝色标记之间的部分。 |
| Transition Offset | 过渡到的目标状态的起始播放的时间偏移。例如,值为 0.5 表示目标状态在其时间轴的 50% 处开始播放。 |
| Interruption Source | 此选项用于控制该过渡可能中断的情况。有关更多信息,请参阅过渡中断。 |
| Ordered Interruption | 确定当前过渡是否可在不考虑顺序的情况下被其他过渡中断(请参阅下文的过渡中断)。 |
| Conditions | 一个过渡可以具有单个条件、多个条件或根本没有条件。如果过渡没有条件,Unity Editor 只会考虑 Exit Time,并在达到退出时间时发生过渡。如果过渡有一个或多个条件,则必须满足所有条件才能触发过渡。 一个条件包含: - 一个事件参数(在条件中考虑其值)。 - 条件谓词(需要时填写,例如,浮点数的“小于”或“大于”)。 - 一个参数值(需要时填写)。 如果为该过渡选择 Has Exit Time 并有一个或多个条件,请注意 Unity Editor 在 Exit Time 之后考虑条件是否为 true。这样可确保在动画的特定部分中进行过渡。 |
使用 Interruption Source 和 Ordered Interruption 属性可控制如何中断过渡。
在概念上,中断顺序就像这些过渡已排队,然后解析为一个有效过渡从第一个过渡插入到最后一个过渡。
AnyState 中的过渡始终首先添加在队列中,然后其他过渡根据 Interruption Source 的值排队:
| Value | 功能 |
|---|---|
| None | 不再添加任何过渡。 |
| Current State | 将当前状态的过渡排队。 |
| Next State | 使下一状态的过渡进行排队。 |
| Current State then Next State | 将当前状态的过渡排序,然后将下一状态的过渡排序。 |
| Next State then Current State | 将下一状态的过渡排队,然后将当前状态的过渡排队。 |
Ordered Interruption 属性将更改队列的解析方式。
根据该属性的值,对队列的解析将在以下列出的不同时间结束。
| 值 | 结束时间 |
|---|---|
| 选中 | 已找到有效过渡或当前过渡。 |
| 取消选中 | 已找到有效过渡。 |
只有 AnyState 过渡才能被自身中断。要了解有关过渡中断的更多信息,请参阅状态机过渡中断 (State Machine Transition Interruptions)。
使用过渡图可以直观地调整过渡设置。
过渡图中的白线表示每个状态的 IK 脚接触。图形的顶部代表左脚,底部代表右脚。当白线位于图形顶部时,左脚接触地板平板。当白线位于底部时,右脚接触地板平板。
调整过渡设置,直到状态之间实现平滑过渡。具有平滑过渡的白线可避免脚部打滑和动画中的跳跃,并保留运动的动态效果。
使用以下操作来调整过渡设置:
如果属于此过渡的当前状态或下一状态是混合树状态,则混合树参数将出现在检视面板窗口中。通过调整这些值可预览在混合树值设置为不同配置时的过渡表现情况。如果混合树包含不同长度的剪辑,您应该测试在显示短剪辑和长剪辑时的过渡表现。调整这些值不会影响过渡在运行时的行为方式;它们仅用于帮助您预览不同条件下的过渡表现情况。
一个过渡可以具有单个条件、多个条件或没有条件。如果过渡没有条件,Unity Editor 只会考虑 Exit Time,并在达到退出时间时发生过渡。如果过渡有一个或多个条件,则必须满足所有条件才能触发过渡。
一个条件包含:
如果为该过渡启用 Has Exit Time 且过渡有一个或多个条件,Unity 仅在状态的退出时间之后才会检查这些条件。这可确保仅在动画的特定部分中进行过渡。
Transition