学习unity游戏开发,不免就要用到动画状态机,所以现在我给大家介绍一下unity动画状态机
       一个角色拥有多个可以在游戏内在不同状态下调用的不同动作是一件很普遍的事。比如,一个角色可以在等待时呼吸或者摇摆,在得到命令时行走或者从一个平台掉落时惊慌地伸手。当这些动画进行回放时,使用脚本控制他们可能是一个潜在的复杂工作。Mecanim借用了电脑工程师熟知的一个概念——状态机——来简单的控制和序列化角色动画。
 状态机基础
       一个最基本的观点是:一个角色应该在任何给定的时刻执行某些特定的动作。这些动作是否可用是基于游戏进程的,但是典型的动作包括等待,移动,跑动,跳跃等。这些动作被称为状态。在场景中当角色正在行走、等待或者做其他什么的时候都会处于某一个状态。一般来说,角色在进入下一个状态时会被限制,而不是可以从任意一个状态跳转至另一个任意状态。比如,一个“跑动跳跃”动作只可以在角色正在跑动时执行而不是当角色正在站立的时候。你永远不应该从等待动作中直接跳转到跑动跳跃动作状态。让角色从正确跳转状态的选项被称为状态转移。而将上面这些(状态的集合,状态转移的集合和一些用于记录正确状态的变量)整合起来的东西就是一个状态机。

       状态和状态转移可以使用图形界面描述,在这个界面里,节点用来描述状态而带箭头的线段用来描述状态转移。你可以认为当前的状态(被标记或高亮的某个节点)只可以沿着这些箭头方向转移至其他状态。


       状态机对于动画的重要性在于他们可以很简单地通过相对较少地编码完成设计和更新。每个状态都有一个当前状态机在那个状态下将要播放的动作集合。这将允许动画师和设计师不使用代码而定义可能的角色的动画和动作序列。
 Mecanim State Machines状态机
       Mecanim的动画状态机提供了一种可以预览某个独立角色的所有相关动画剪辑集合的方式,并且允许你能够在游戏中通过不同的事件触发不同的动作。

动画状态机可以通过动画状态机窗口进行设置,而这个窗口看起来像是这样:


       状态机包括状态、状态转移和事件,并且在大的状态机中可以设置一个小的子状态机。
动画状态
动画转移
动画参数