Unity中的动画过渡

1、动画过渡概况

动画过渡允许状态机从一个动画状态切换或混合到另一动画状态。过渡不仅定义状态之间的混合应该耗费多长时间,而且还定义它们应该在什么条件下激活。您可以设置仅在特定条件成立时才发生过渡。要设置这些条件,请在 Animator Controller 中指定参数值。

例如,您的角色可能具有“巡逻”状态和“睡眠”状态。您可以将巡逻和睡眠之间的过渡设置为仅在“alertness”参数值低于某个水平时才会发生。

Unity中的动画过渡_第1张图片

在任何给定时间只能有一个激活的过渡。但是,当前激活的过渡可能会被另一个过渡中断。

2、过渡属性官方说明

要查看某个过渡的属性,请单击 Animator 窗口中连接两个状态的过渡线。这些属性将显示在 Inspector 窗口中。

Unity中的动画过渡_第2张图片

使用以下属性可调整过渡及其在当前状态和下一状态之间如何混合。

类型 描述
标准化时间 范围从 0.0 到 1.0,表示动画播放的相对进度。
实际时间 指动画播放的具体秒数,例如:2.5 秒、3.7 秒等。

属性 功能
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。这样可确保在动画的特定部分中进行过渡。

3、过渡属性白话说明

(1)Has Exit Time(退出时间)

  • 这是一个自动切换动画的功能。
  • 不需要任何参数(如按钮按下、数值变化),只要当前动画播放到某个特定时间点,就会自动切换到下一个动画。
  • 比如你在“跳舞”动画里设置了 Exit Time = 0.8,那这个动画播放到 80% 的时候就会自动跳转到下一个动作。
  • 它不是看实际过了多少秒,而是看动画播放到了百分之多少

(2)Exit Time(退出时间)

  • 如果你勾了 Has Exit Time,那就要在这里填一个数字,表示“在动画播放到多少百分比的时候开始切换”。
  • 数值范围一般是 0~1,但也可能是更大的数。
    • Exit Time = 0.75:动画播放到 75% 时开始切换。
    • Exit Time = 3.5:对于循环动画来说,表示“在第 3.5 圈的时候才切换”。

对循环动画的影响:

  • 如果你的动画是循环播放的(比如走路、跑步),那么每圈都会检查一次是否到了该切换的时间。
  • 如果 Exit Time < 1,每一圈都会判断要不要切换。
  • 如果 Exit Time > 1,比如 3.5,就只会在第 3 圈半的时候判断一次。

(3)Fixed Duration(固定持续时间)

决定 Transition Duration(过渡时间)是按秒数还是按动画比例来计算。

  • ✅ 勾选了 Fixed Duration:Transition Duration 是几秒就是几秒。
  • ❌ 没勾选:Transition Duration 是源动画长度的比例(标准化时间)

(4)Transition Duration(过渡时间)

  • 表示两个动画之间切换需要多长时间。
  • 就像视频转场一样,你可以让切换平滑一点(比如 0.5 秒渐变),而不是瞬间跳过去。
  • 具体单位由 Fixed Duration 控制。

(5)Transition Offset(过渡偏移)

  • 决定目标动画从哪里开始播放。
  • 比如你想让“落地动画”从一半的位置开始播放,就可以设为 0.5
  • 默认是 0,表示从头开始。

(6)Interruption Source(中断来源)

  • 设置当前过渡能不能被其他过渡打断。
  • 比如你正在播放一个很长的“攻击动画”,但突然想切到“闪避”,就要允许它被打断。

(7)Ordered Interruption(有序中断)

  • 决定多个过渡之间是否能互相打断。
  • 如果开启,Unity 会按照顺序判断哪些过渡可以优先执行。

(8)Conditions(条件)与与 Has Exit Time 的关系

如果你同时用了 Has Exit Time 和 Conditions:

  • Unity 会先等动画播放到指定时间(Exit Time),
  • 然后再去检查条件是否成立。
  • 只有都满足,才会真正切换动画。

总结一下(一句话概括每个功能)

属性 一句话总结
Has Exit Time 动画播放到一定进度就自动切换,不需要参数。
Exit Time 设定“自动切换”的具体时间点(用百分比)。
Fixed Duration 决定过渡时间是用“秒”还是“动画比例”。
Transition Duration 动画切换过程有多长(多久完成过渡)。
Transition Offset 目标动画从哪一帧开始播放。
Interruption Source 当前动画能否被别的动画打断。
Ordered Interruption 多个过渡之间是否能互相打断。
Conditions 触发动画切换的“开关条件”,比如变量等于多少。

4、过渡图

要手动调整以上列出的设置,可直接在字段中输入数字或使用过渡图。在操作视图元素时,过渡图会修改上述值。

Unity中的动画过渡_第3张图片

请根据以下说明更改图形视图中的过渡属性:

  • 拖动 Duration “out” 标记可更改过渡的 持续时间 (Duration) 。
  • 拖动 Duration “in” 标记可更改过渡的持续时间以及 退出时间 (Exit Time) 。
  • 拖动目标状态可调整 过渡偏移 (Transition Offset) 。
  • 拖动预览播放游标可在 Inspector 底部的预览窗口中快速预览动画混合(效果)。

Unity官网说明:团结引擎 - 手册: 动画过渡

你可能感兴趣的:(Unity,unity,游戏引擎)