Skip to main content

动画过渡(Animator Transitions)

动画过渡连接两个动画状态,当满足其条件(如果有)并且退出时间已过时触发。通过打开设置下拉菜单可以访问其设置。

要创建新的动画过渡,请右键单击源动画状态,选择“创建过渡”,然后单击目标动画状态。

多个过渡可以连接相同的两个状态,用线上的三个箭头表示,而不是一个。

image.png

默认的动画过渡,从“新状态”过渡到“新状态0”。

过渡列表

过渡列表位于动画过渡检查器的顶部,标记为 Transitions(过渡),其中包含动画过渡。

如果两个状态之间存在多个过渡(用三个箭头表示),可以通过点击和拖动来选择和重新排序。有关过渡执行顺序的详细信息,请参阅动画状态页面。

Mute(静音)字段会禁用特定过渡,而 Solo(独奏)字段会禁用所有其他过渡。这些功能并不常用。

你可以使用过渡列表下方的文本字段重命名动画过渡。

image.png

两个动画状态,通过两个动画过渡连接。顶部的一个被选中,显示为浅灰色。

条件列表

Condition List(条件列表)是动画过渡上标记为 Conditions(条件)的动画条件列表。它包含所有必须同时满足的条件才能触发动画过渡。要添加新的动画条件,请点击 Condition List(条件列表)底部的“+”按钮。要删除高亮的动画条件,请按“-”按钮。

不同的动画条件包括:

  • Float(浮点数):目标可以是任何浮点数(小数)。

  • Int(整数):目标可以是任何整数(整数)。

  • Bool(布尔值):目标只能是真或假。

  • Trigger(触发器):没有目标;启用时触发,触发后会自动禁用。

对于 逻辑(两个条件都必须满足),请在一个动画过渡上放置两个条件。

对于 逻辑(任一条件触发过渡),请使用两个单独的动画过渡,每个过渡包含一个动画条件。

示例:

考虑 Condition List(条件列表)中的两个条件:IntExample Greater 1IntExample 大于 1)FloatExample Less 9.5FloatExample 小于 9.5)

  • 如果 IntExample 设置为1,FloatExample 设置为5,则过渡不会触发,因为 IntExample 不大于1,要求所有条件都必须满足。

  • 如果 IntExample 设置为2,则过渡会触发,因为所有条件都已满足。

image.png

一个包含所有可能动画条件类型的条件列表示例。注意 TriggerExample 动画条件被选中,如果按下“-”按钮将被删除。

任意状态

Any State(任意状态)过渡是通过 右键单击 蓝色的 Any State(任意状态),选择“Make Transition(创建过渡)”,然后选择目标动画状态创建的特殊过渡。这些过渡与普通动画过渡不同,因为它们表现得好像过渡源自所有动画状态,因此可以从任何状态触发。它们还具有中断任何过渡的独特能力(参见中断)。

Any State Transitions(任意状态过渡)的额外选项是 Can Transition To Self(可以过渡到自身),它决定了目标动画状态是否可以使用此特定动画过渡过渡到自身。

image.png

一个任意状态过渡的示例。注意额外的可以过渡到自身选项。

退出时间

Exit Time(退出时间)字段允许在源动画状态的动画片段播放一定比例后触发动画过渡。要启用/禁用它,请勾选/取消勾选 Has Exit Time有退出时间)复选框。没有片段的状态的持续时间为1秒。

示例:

对于从 Old State旧状态)New State新状态)的过渡,Exit Time(退出时间)设置为1.5,且 Old State旧状态)的动画片段为2秒,则只有在 Exit Time * Clip Length = 1.5 * 2 = 3秒后,过渡才能触发。

单关键帧动画片段的退出时间被视为1秒。建议创建两个关键帧的片段,每个关键帧相隔1帧,以避免混淆。

过渡持续时间

Transition Duration(过渡持续时间)字段设置动画过渡的持续时间,决定两个动画状态的动画片段在过渡期间如何混合。在过渡开始时,源动画状态的动画片段完全播放,而在过渡结束时,目标动画状态的动画片段完全播放。

如果勾选了 Fixed Duration固定持续时间)复选框,则 Transition Duration(过渡持续时间)以秒(s)为单位。如果未勾选,则它是源动画状态的动画片段长度的比例(显示为百分比,但1 = 100%)。

示例:

对于从 Old State旧状态)到 New State新状态)的过渡,过渡持续时间设置为4,且启用了 Fixed Duration固定持续时间),则在过渡的第3秒,Old State旧状态)的动画片段以25%的权重播放,New State新状态)的动画片段以75%的权重播放。

如果禁用了 Fixed Duration固定持续时间),且 Old State旧状态)的动画片段为2秒,则过渡将持续 Transition Duration * Clip Length = 4 * 2 = 8秒。

高级细节

过渡偏移

Transition Offset(过渡偏移)字段设置目标动画状态中动画片段的偏移量,以比例表示。例如,如果设置为0.5,则在动画过渡开始时,目标动画状态的动画片段从其运行时间的50%处开始播放。

中断

在动画过渡期间,如果触发了另一个可以中断当前过渡的过渡,它会暂停正在进行的过渡,捕获两个动画片段的当前状态,并开始新的过渡。这里的“源”是这些效果的快照,其长度是源状态中动画片段的长度。

中断源

Interruption Source(中断源字段决定哪些动画过渡可以中断当前过渡,提供五个选项:

  • :仅允许任意状态过渡中断。

  • 当前状态:允许任意状态过渡和从源到目标动画状态的过渡中断。

  • 下一个状态:允许任意状态过渡和从目标到任何其他动画状态的过渡中断。

  • 当前状态然后下一个状态:允许任意状态过渡,然后是从源到目标动画状态的过渡,接着是从目标到任何其他动画状态的过渡中断。

  • 下一个状态然后当前状态:允许任意状态过渡,然后是从目标到任何其他动画状态的过渡,接着是从源到目标动画状态的过渡中断。

注意:顺序很重要;它会选择找到的第一个允许的动画过渡。

Ordered Interruption(有序中断)字段勾选后,仅允许列表中高于所选动画过渡的过渡中断它。

可视化过渡编辑器

可视化过渡编辑器(Visual Transition Editor)是一个可视化工具,允许你编辑动画过渡的属性,如 Exit Time(退出时间)、Transition Duration(过渡持续时间)和 Transition Offset(过渡偏移)。当源或目标动画状态具有动画片段时,它会显示。

编辑器直观易用,你可以:

  • 通过拖动时间线顶部的蓝色开始和结束标记来更改过渡的开始和结束。

  • 通过拖动时间线顶部的过渡来调整过渡的开始和结束时间(以及持续时间)。

  • 通过左右拖动底部动画片段来修改目标动画片段的偏移。

顶部的白线是两个动画的枢轴权重随时间的变化。这是虚拟形象左右脚之间最稳定的点,左脚为0,右脚为1。这受禁用烘焙到姿势的根变换位置动画的影响。这实际上没什么用,以免你曾经好奇过 :)

image.png

一个可视化过渡编辑器的示例。

在这个可视化过渡编辑器示例中:

  • Exit Time(退出时间):0,因为过渡从旧状态的开始处开始。

  • Transition Offset(过渡偏移):0,因为过渡从新状态的开始处开始。

  • Old State’s Animation Clip(旧状态的动画片段):启用了循环时间,表示它在第一次播放后重复。

  • New State’s Animation Clip(新状态的动画片段):禁用了循环时间,表示它在第一次播放后不重复。

  • Transition Duration(过渡持续时间):设置为1,且禁用了固定持续时间,意味着过渡将持续旧状态动画片段的整个长度。