unity|Unity学习笔记(Animator、Animator Controller、Animation Cilp之间的关系、以及Blend Tree的用法;)

首先..祝本菜不挂科!
首先,我们先想一个问题,我们控制一个人物移动,会产生不同的移动画面,那么我们是如何切换这些动画的呢?很简单,我们只需要收集当前人物的特定的状态即可,比如是否受到攻击、水平速度、垂直速度等等;
Animator可以说是正是干了收集人物的状态数据的活,如何居然有了数据,那么我们就得对着这些数据进行处理,如何判断该播放哪个动画,Animator Controller正是干了这个活的,他从Animator中拿取数据,然后根据这些数据进行处理;
居然是要从Animator中拿数据,而且一个Sence中可以有多个Animator,所以我们得将特定的Animator Controller与特定的Animator关联起来,如下:
unity|Unity学习笔记(Animator、Animator Controller、Animation Cilp之间的关系、以及Blend Tree的用法;)
文章图片

我们可以在这个选项中选择Animator对应的的Animator Controller;
然后Animation Cilp就比较好理解了,这个就是我们制作的动画,我们可以直接从资源管理器在将Animation Cilp拖入到Animator Controller中,供之使用,如图:
unity|Unity学习笔记(Animator、Animator Controller、Animation Cilp之间的关系、以及Blend Tree的用法;)
文章图片

注意:这里我们创建好一个Animation Cilp后,可以供多个Animator Controller使用。
总结一下:Animator链接着程序与Animator Controller,Animator Controller管理着众多的Animation Cilp;
制作Animation Cilp的几种途径:
1:直接在资源管理器中创建一个Animation Cilp对象,然后在Animation制作界面制作即可;
2:在Animation制作界面点击Hierarchy界面中的对象,为其Animator脚本对应的Animator Controller创建对应的Animation Cilp,当选中的对象没有Animator脚本和Animator Controller时,系统会自动创建,并将两者关联起来;
如何将程序与Animator Colltroller链接起来:
这个时候我们就需要BlendTree【这里仅仅说明2D游戏方面的运用】了;
BlendTree说白了就是一个根据坐标系的来选择播放那个动画的玩意;
这个坐标系里有一个红点和一堆蓝点,蓝点代表着一个Animation Cilp或者另外的BlendTree,红点靠经哪个蓝点,系统就会给对应的对象播放对应的Animation;
我们可以通过程序设置红点的坐标,以达到控制动画播放的效果;
unity|Unity学习笔记(Animator、Animator Controller、Animation Cilp之间的关系、以及Blend Tree的用法;)
文章图片

其中箭头指着的就算红点的X坐标参数和Y坐标参数,这里本菜是用BlendTree绑定了另外两颗BlendTree,然后另外两颗BlendTree分别绑定了两个动画:
unity|Unity学习笔记(Animator、Animator Controller、Animation Cilp之间的关系、以及Blend Tree的用法;)
文章图片

这里BlendTree中的坐标系可以是2维的也可以是1维的,这取决于BlendTree与几个参数有关;
在程序当中,我们可以通过获取对象的Animator类,然后使用Animator类提供的方法来改变对应的Animator Controller中的参数【注意:每颗BlendTree的参数都是共享的】
如下:

using System; namespace ConsoleApp2 { Animator KingBlackAnimation; //存储控制动画的权限void Start() { KingBlackAnimation = GetComponent(); //获取对应对象的Animator脚本KingBlackAnimation.SetFloat("IsRun", 1f); //将Animator对应的Animator Controller中一个类型为float名为IsRun的参数修改为1 } }

【unity|Unity学习笔记(Animator、Animator Controller、Animation Cilp之间的关系、以及Blend Tree的用法;)】这里我们就可以提供程序改变红点的位置了;

    推荐阅读