Skip to content

状态过渡简介

如果要控制状态节点如何过渡到另一状态节点 ,您需要创建 过渡连线(Transition),它展示了状态节点之间的连接关系,帮助定义了 状态机 的结构。过渡连线 不仅定义 状态节点 之间的混合应该耗费多长时间,而且还定义它们应该在什么条件下激活。您可以设置仅在特定条件成立时才发生过渡,如果没设置条件,那出发状态将在 退出时间(Exit Time)结束后进行过渡。要设置这些条件,请在 过渡参数(Parameters) 窗口中创建并设置参数值。

状态机010.png

创建过渡连线

要创建 过渡连线(Transition),请选中一个 状态节点 (出发状态节点)边框并拖动到另一个 状态节点(目标状态节点)。

在本示例中, 空闲(Idle)状态 与 奔跑(Run)状态 双向连接。单个 过渡连线 只是单向的,所以,如果两个状态节点要来回过渡,您需要从另一个方向再创建一个过渡连线。

状态机011.gif

从 出发状态 到 目标状态,支持同时存在多个同向过渡,当同向过渡数量大于或等于 2 时,这些过渡会共用一条连线,连线末端会同时显示三个箭头。

状态机012.gif

各个同向过渡的 过渡图表、过渡属性 和 过渡条件 相互独立,虽然他们共用同一套过渡连线的箭头和图标。这用于制作两个状态节点间不同条件下采取不同过渡方式。

过渡连线基础操作

  • 选中:使用鼠标左键,点击 过渡连线 的箭头或图标可以选取指向的 过渡连线。

![Animator Controller (54).png](https://editordocs.blockmango.com/res/image/book188/ver326/zh-CN/Animation_Controller_Window/Animator Controller (54)-lcjlnxskni.png)

  • 删除:请将鼠标移至 过渡连线 的箭头或图标,点击鼠标右键,即可对 过渡连线 进行删除操作。

![Animator Controller (55).png](https://editordocs.blockmango.com/res/image/book188/ver326/zh-CN/Animation_Controller_Window/Animator Controller (55)-gnfvmfhvlq.png)

过渡属性

当 过渡连线 处于选中状态时,检视窗口(Inspector)中可查看和编辑该 过渡连线 的以下属性。

过渡001.png

  1. 过渡列表(Transitions),用于分别预览和选择该过渡连线或状态节点所引申的所有过渡条目,以及设置它们的运行情况。
  2. 过渡图表(Transition Graph),可视化调整过渡设置。
  3. 过渡设置(Transition Settings),调整过渡条目属性及其在出发状态和目标状态之间如何混合。
  4. 过渡条件列表(Conditions),控制状态节点何时可以过渡。
  5. 过渡进度条(Transition Progress),用于播放、查看两个状态节点之间的局部过渡效果。

过渡列表(Transitions)

如果选中的状态节点建立了指向其他状态节点的过渡连线,或者过渡连线中包含多个 同向过渡,那 检视窗口(Inspector)的 过渡列表(Transitions)将会以列表的形式显示所有的这些 过渡条目。

基础操作

  • 选中:鼠标左键点击选中列表中不同过渡条目,会显示其对应的过渡图表、过渡设置和过渡条件列表。

过渡003.gif

  • 命名:点击 过渡列表 中的过渡条目左侧的按钮,可以自定义此过渡条目名称。

过渡003.png

  • 删除:点击 过渡列表 中的过渡条目右侧的按钮,可以删除此过渡条目,同时移除连线。

过渡004.png

设置

过渡列表 可以设置列表中不同过渡条目的播放模式:

名称位置描述
禁用(Mute)过渡005.png禁用该过渡条目。过渡连线箭头改为红色。
过渡006.png
仅用(Solo)过渡007.png仅播放该过渡条目。过渡连线箭头改为绿色。
过渡008.png

设置规则

  • 可设置多个 Solo 过渡条目以仅播放启用了 Solo 的过渡条目。
  • 如果一个 过渡条目 启用了 Solo,则对该 过渡条目 的 出发状态节点 所引申出的所有其他 过渡条目 启用 Mute。
  • 如果同时启用 Solo 和 Mute ,则 Mute 将优先执行。
--------------
如图显示,Idle 状态 只会运行 [Idle > A(2)] 这一条 过渡条目,其他过渡条目将禁用。
过渡011.png
--------------

过渡图表(Transition Graph)

用于可视化调整出发状态节点所绑定的动画向目标状态节点绑定的动画过渡的设置,可直接在过渡设置(Transition Settings)对应属性字段中输入数字或使用 过渡图表(Transition Graph)。在操作过渡图表元素时,过渡图表会同步修改 过渡设置(Transition Settings) 中对应属性的数值。

基础操作

  • 缩放:将鼠标指向过渡图表,滚动鼠标滚轮或类似功能可放大和缩小过渡图表单位时间间隔。

过渡013.gif

  • 平移:将鼠标指向过渡图表长按鼠标右键或中键并拖动鼠标,可以整体平移过渡图表。

过渡014.gif

构成

过渡图表 由以下元素构成:

过渡002.2.png

  1. 出发状态条(Departure State)。
  2. 目标状态条(Target State)。
  3. 过渡开始标记(Duration In),代表进入过渡的时间节点,拖动标记可更改 过渡持续时间(Transition Duration) 以及 退出时间(Exit Time)。
  4. 过渡结束标记(Duration Out),代表完成过渡的时间节点,拖动 Duration Out 标记可更改 过渡持续时间(Transition Duration)。
  5. 指针(Preview playback current time),用于标记和编辑当前播放的流程时间节点。
  6. 退出时间(Exit Time),出发状态 开始进入过渡并逐渐退出流程的时间。
  7. 过渡偏移(Transition Offset),目标状态 实际开始播放(进入过渡)的时间相对于 目标状态 第 0 帧时间的偏移。
  8. 过渡时间遮罩(Transition Duration),过渡开始标记 开始到 过渡结束标记 结束的时间段,横跨出发状态条和目标状态条

过渡设置(Transition Settings)

过渡连线可设置以下属性。

过渡015.png

名称描述
启用退出时间(Has Exit Time)退出时间(Exit Time)是一种不依赖参数的特殊过渡方式,它依赖状态的标准化时间。

![Animator Controller (70).png](https://editordocs.blockmango.com/res/image/book188/ver326/zh-CN/Parameters/Animator Controller (70)-vnexyyboof.png)若勾选此项,可在 退出时间(Exit Time)指定的具体时间进行过渡。当满足 过渡条件 后并不马上切换动画,而是在 出发状态 绑定的动画播放到 退出时间 后才开始过渡切换。

![Animator Controller (71).png](https://editordocs.blockmango.com/res/image/book188/ver326/zh-CN/Parameters/Animator Controller (71)-ywmgthcjgb.png)若不勾选此项,动画将马上切换为 目标状态 绑定的动画。
退出时间(Exit Time)启用退出时间(Has Exit Time)选项被勾选时,此值表示动画开始过渡的确切时间,该时间以标准化时间表示,即为 出发状态 绑定的动画时间的相应倍数。
过渡016.png
固定持续时间(Fixed Duration)用于设置 过渡持续时间(Transition Duration)为相对值还是绝对值。

![Animator Controller (70).png](https://editordocs.blockmango.com/res/image/book188/ver326/zh-CN/Parameters/Animator Controller (70)-kffkgfwdkm.png)若勾选此项, 过渡持续时间(Transition Duration)为固定数值,单位将会变成秒。

![Animator Controller (71).png](https://editordocs.blockmango.com/res/image/book188/ver326/zh-CN/Parameters/Animator Controller (71)-sgujepvapl.png)若不勾选此项,过渡持续时间(Transition Duration)为标准化时间,单位为相对转换 出发状态 绑定的动画时间的相应倍数。
过渡持续时间(Transition Duration)相对于 出发状态 持续时间的过渡持续时间,以标准化时间或秒为单位,具体取决于 启用持续时间绝对值(Fixed Duration)是否勾选。此时间在过渡图表中显示为两个黄色标记之间的部分。
过渡017.png
过渡偏移(Transition Offset)目标状态 的起始播放时间相对于 退出时间(Exit Time)的偏移。
过渡018.png

过渡条件(Conditions)

过渡设置控制状态节点间混合的结构,而 过渡条件(Conditions)控制状态节点间何时可以过渡。仅仅定义过渡设置是不够的,您还必须定义过渡的方式和时机。

创建过渡条件

要创建 过渡条件(Conditions),请选中需要创建条件的 过渡条目 后,在 过渡条件 属性下点击 追加(Append) 按钮。

![Animator Controller (77).png](https://editordocs.blockmango.com/res/image/book188/ver326/zh-CN/Parameters/Animator Controller (77)-kadaubfcur.png)

基础操作

  • 自定义序列:您可以选中一个 过渡条件,并拖动左侧的控制柄以调整 过渡条件 展示顺序。值得注意的是,此序列仅用于查看,不会影响过渡逻辑。

过渡020.gif

  • 删除:鼠标左键点击 过渡条件 右侧的删除按钮,可对 过渡条件 进行删除。

过渡019.png

属性设置

过渡条件 包含以下属性:

名称位置描述
过渡参数过渡020.png下拉 过渡参数 控件可以选择在 过渡参数(Parameters)窗口中创建的参数。选中的参数的参数值变化,将直接影响该 过渡条目 是否执行。
条件谓词过渡021.png条件谓词 用于判断 过渡参数 的值和 条件参数值 的关系,如果 过渡参数 的值和 条件参数值 的关系符合 条件谓词 的描述,该 过渡条目 将执行。
整数(Integer) 的过渡参数拥有谓词:
        Greater(大于)
        Less(小于)
        Equal(等于)
        NotEqual(不等于)
浮点数(Float) 的过渡参数拥有谓词:
        Greater(大于)
        Less(小于)
布尔型(Bool)触发器(Trigger) 的过渡参数默认谓词是:相同。
条件参数值过渡022.png用于选择或填写条件参数值,其中 触发器(Trigger) 的条件参数值默认为:True(真),且无法编辑修改。

过渡条件的类型和过渡参数如何控制状态机等相关内容,参阅 过渡参数 小节。

过渡条件规则

  • 一个过渡条目可以具有单个条件、多个条件或没有条件。
  • 如果过渡条目没有条件,则唯一影响状态节点间的过渡只有 退出时间(Exit Time),并在达到 退出时间(Exit Time)时发生过渡。
  • 如果过渡条目有一个或多个条件,则必须满足所有条件才能触发过渡。
  • 如果为该过渡条目勾选了 启用退出时间(Has Exit Time)并有一个或多个条件,则仅在状态的 退出时间(Exit Time)之后才会检查这些条件。

过渡023.png