Animator状态机子状态与混合树
2017-03-17 本文已影响46人
_凉笙
子状态动画机
子状态相当于在目前层的状态机下面建立一个自状态集合,可以将类似的动画装填结合在一起,简化动画逻辑。典型的子状态机如下所示(Attack是子状态机):
右键即可添加子状态,子状态中可以放入若干状态,一般都会用到。

混合树
混合树表示多个状态的混合调用,一般根据某些参数来实现这些动画状态之间的混合与切换,根据参数的个数可以分为1D混合、2D混合和直接混合。比如在之前的案例中,我们通过控制Float参数Speed实现了Idle、Run、Walk之间的过渡,我们这里也可以通过混合树来实现。1D混合如下图所示。
混合树可以参考官方状态机项目的Generic Skeleton Example
右键Create State>From New Blend Tree即可创建混合树



设定混合类型为1D
添加混合参数Speed
添加Motion,并设定Motion在的门坎值。
我们通过一个混合树就实现了之前通过三个状态并设定过渡条件实现的功能。
除了1D混合,我们还可以2D混合,2D混合有三种不同类型:

2D Freedom Directional,表示在二维每个空间方向可以有两个动作,但是必须一个是Idle。
2D Freedom Cartesian,表示在笛卡尔二维空间中各个方向可以随便设定动作。这个是最常用的。
下面我们在1D的基础上,增加三个动作,后退、左转和右转,那么1D混合满足不了需求了,我们需要用2D混合类型,通过2D类型控制了6个Motion的切换。

