首页/ 第 9 章 · 动画系统/ 第 131 课
LESSON 131 · 动画系统

动画状态机 Animator State Machine

状态机已掌握。下一课学动画参数。

⏱ 约 15 分钟📊 难度:入门🗂 第 9 章 · 动画系统📍 第 131 / 300 课
课程进度
131 / 300

🎯本节学习目标

  • 理解状态机运作
  • 掌握 Any State
  • 掌握子状态机与状态行为

🚀课程导读

状态机是动画的“大脑”:当前播什么、何时切到别的。本课把状态机的全部机制讲透。

状态机的运作方式

“当前状态 + 过渡条件”决定播放。

  1. 【状态 State】一个节点 = 一种动画(待机、走路、攻击)。
  2. 【当前状态】任意时刻只有一个状态在播放(Base Layer)。
  3. 【过渡 Transition】状态之间的箭头,带条件,满足即切换。
  4. 【判断】每帧检查当前状态连出的过渡条件,满足就切到目标状态。
  5. 【默认状态】绿色边框的是初始状态。
  6. 【状态命名】清晰命名(Idle、Walk、Jump、Attack)。
  7. 【状态属性】选中状态,Inspector 有 Motion(动画)、Speed(播放速度)、Mirror(镜像)等。
  8. 【Write Defaults】勾选默认:切换时恢复未动画的属性(一般保持默认)。
💡
状态机 = 一张“地图”:你在哪(当前状态)、怎么走(过渡条件)。

Any State 与子状态机

进阶节点。

  1. 【Any State 任意状态】灰色节点:从“任何状态”都可出发的过渡。适合“随时可打断”的动作,如受击、死亡。
  2. 用法:Any State → Dead 状态,条件 IsDead=true。这样不管在走还是在跳,一死就切死亡。
  3. 【注意】Any State 的过渡优先级高于普通过渡,且要小心冲突。
  4. 【子状态机 Sub-State Machine】把一组相关状态打包成一个节点,用于复杂角色(如“移动组”里含走/跑/冲刺)。
  5. 【创建】右键 → Create Sub-State Machine。
  6. 【状态行为 StateMachineBehaviour】给状态挂“行为脚本”(进入/退出/更新回调),进阶(第 142 课补充)。
  7. 【层级 Layers】动画层(第 136 课)管理上下半身分开的动画。
  8. 【实战】搭建“待机/走路/跳跃/攻击/死亡”五个状态的完整状态机。
实战状态机:Idle/Walk/Jump/Attack/Dead + Any State 死亡过渡,覆盖 90% 角色需求。

常见错误与排查

错误:动画状态互相“打架”?
原因:过渡条件冲突或优先级混乱
解决:用参数区分;把高优先级/紧急过渡用 Any State;检查过渡条件是否互斥。

动手练习

课后小任务(做出来才算真的学会)

  • 搭建 5 状态状态机
  • 用 Any State 连接死亡过渡
  • 给状态设置不同播放速度

本节小结

状态机已掌握。下一课学动画参数。

完成打卡后,主站会实时更新你的学习进度 🎯

← 上一课Animator 与 Animator Controller