Unity动画系统-Blend Tree



Blend Tree-动画混合树


作用:将多个动画融合在一起,按条件触发。

创建混合树:在动画状态机中:右键->Create->Blend Tree

双击进入混合树,看右边的属性

Blend Type:混合的类型,三种类型

1D:一维混合 需要一个参数 (下面)

2D:两个参数

自由混合:多个参数

1).

通过1D混合融合人物的Idle、Walk、Run动作

首先创建一个过渡条件Float类型的speed

speed来控制人物的Idle Walk Run

在混合树属性中:参数选择speed

添加三个动作、将三个动画剪辑拖进去。

将动画拖进去以后,我们会看到我们的根节点中多出了三条连接出来的子节点,也就是我们的动作。

Unity动画系统-Blend Tree_第1张图片

参数speed,是我们设置的参数,必须是float类型的。我们就是通过这个参数来实现动作的切换。

对于1D混合,只需要一个参数。

Unity动画系统-Blend Tree_第2张图片

我们需要修改每一个动作切换所需要的预值。

这个图的含义,我们可以把横轴看做是float值,当我们点击一块区域,下面的动作也会高亮显示,也就说明第一个动作是随着时间慢慢减弱的

三角区域就代表这个动作的权重(竖轴代表权重)

也就是说当时间达到某一点时,Idle的权重可能是0.8,此时下面还有一个交点,是Walk的权重,是0.2 所以此时如果动画运动的时候,就是Idle的动画幅度更大一点。

我们可以将Idle设为0 walk设为0.5 Run设为1,这样就将三个动作三等分。

此时我们就可以通过代码获取float的值,来自动的修改动画。

使用动画混合树和我们之前动画的区别就是,在某一个float值得时候,有可能是两个动作都在执行。基本的状态过渡就无法实现。

 2).

使用2D混合控制人物的Walk、run、idle、walkleft、walkright

Unity动画系统-Blend Tree_第3张图片

2D混合有三种选择,一般只使用第三种

第一种,普通的混合,在一个方向上只能有一个动作,比如跑和走 就不能融合到一起

第二种,可以在同一方向设置两个,但是必须在原点有一个Idle状态,并且对旋转有一定限制。

第三种 没什么限制

首先创建两个过渡条件都是float类型。

分别添加向前 向后 向左 向右 run idle 动作。

因为我们用的是2D混合,所以不能用时间轴来表示,上面的表也变成了笛卡尔坐标系。每一个菱形代表一个状态

设置两个过渡条件

接着给各个动作添加预值

Unity动画系统-Blend Tree_第4张图片

除了手动设置值以外,我们还可以让系统根据动作的速度来自行计算。

3).自由融合,随意添加参数。

Unity动画系统-Blend Tree_第5张图片

你可能感兴趣的:(Unity3D)