动画状态机

角色拥有几个对应于其在游戏中可以执行的不同动作的不同动画,这一点非常常见。例如,它可能在空闲时轻轻呼吸或摇摆,接受命令时走路,从平台坠落时恐慌地举起双臂。回放这些动画时进行控制可能是非常复杂的脚本任务。Mecanim 借用一个称为状态机的计算机科学概念来简化角色动画的控制和排序。

状态机基本原理

基本思想是角色在任何给定时间忙于一些特殊的动作。可用的动作取决于游戏类型,但典型动作包括空闲、走路、跑步、跳跃等。这些动作称为状态,在场景中,角色处于走路、空闲等“状态”。通常,角色要进入另一种状况会受到限制,而不是可以直接从任何状态转换成任何其他状态。例如,跑跳仅在角色已经在跑步时而非停滞不前时实现,所以永远无法直接从空闲状态转换成跑跳状态。角色可从当前状态进入下一个状态的选型称为状态转换。总之,状态集、转换集和记住当前状态的变量形成了状态机

状态机的状态和转换可用一个图解表示,其中节点代表状态,弧(节点之间的箭头)代表转换。您可以把当前状态看作一个标记或置于一个节点上的突出显示,然后只需沿着一条箭头跳转到另一个节点。

动画状态机的价值在于可以用相对较少的编码即可轻松设计和更新。每个状态有一个与之相关的动作 (Motion),并在机器处于该状态时播放。这样就使动画器或设计器能够定义角色动作和动画的可能顺序,无需担心代码如何工作。

Mecanim 状态机

Mecanim 的动画状态机 (Animation State Machines) 提供 一种方式来概览与特殊角色相关的全部动画片段,让游戏中的各种事件(例如用户输入)触发不同的动画。

可从动画器控制器窗口设置动画状态机 (Animation State Machines),如下所示:

状态机 (State Machines) 包含状态 (States)转换 (Transitions)事件 (Events),较小的子状态机 (Sub-State Machines) 可在较大的机器中用作组件。

(返回 Mecanim 简介

Page last updated: 2013-06-24