动画系统-Animator详解

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了动画系统-Animator详解相关的知识,希望对你有一定的参考价值。

参考技术A

选中 Animator Controller文件,点击 Open 即可打开控制器面板

新创建一个 Animator Controller 默认是没有任何状态的

需要自己创建空状态,并进行相应设置

创建一个状态后,我们需要给该状态改名(为了区分状态),并指定一个动作 Motion

这里我创建的是 站立,所以就需要找到对应的 Idel 动画,指定给 Motion

通过参数来对动画进行改变

AnyState :任何状态都可以进入此状态,包括自身。用于死亡等相似的状态
表示任意状态的特殊状态,以蓝色标识,例如我们如果希望角色在任何状态下都有可能切换到死亡状态,那么Any State就可以帮我们做到。当你发现 某个状态可以从任何状态以相同的条件跳转到 时,那么你就可以用Any State来简化过渡关系。

Entry:当前状态机入口
表示状态机的入口状态,以绿色标识。当我们为某个GameObject添加上Animator组件时,这个组件就会开始发挥它的作用。之前也说过一个Animator Controller用于控制多个Animation的播放,那么默认情况下Animator组件会播放哪个动画呢? ——这就是由Entry决定的。但是Entry本身并不包含动画,而是指向某个带有动画的状态,并设置其为默认状态。被设置为默认状态的状态会显示为 橘黄色。当然,你可以随时在任意一个状态上通过 鼠标右键->Set as Layer Default State 更改默认状态。记住, Entry 在Animator组件被激活后 无条件 跳转到默认状态,并且每个Layer 有且仅有一个 默认状态。

Exit,:表示状态机的出口状态
以红色标识。如果你的动画控制器只有一层,那么这个状态可能并没有什么卵用。但是当你需要从子状态机中返回到上一层(Layer)时,把状态指向Exit就可以了。

Parameters标签页中的内容可以说是Animator必需的,包含了我们在Animator中使用的所有“参数”。在拥有多个动画短片的控制器中,正是通过Parameters中的参数实现了不同动画间的转变。

切换到Parameters标签页后,我们可以通过点击“+”创建4中类型的参数,它们分别是Float、Int、Bool和Trigger。前三个都比较好理解,均属于基本数据类型。最后一个Trigger则是一个与Bool类似的参数,同样拥有True和False两种状态。但是不像Bool在设置为True后会一直维持,Trigger在被触发后会迅速重置为未触发状态。这个特性在设置动画转变时非常实用。

除了包含特定动画的状态,状态机更少不了充当不同状态间纽带关系的Transitions,直观上说它们就是连接不同状态的 有向箭头。
举个例子:

以上图为例,我们已经创建了三个自定义状态Idle, Walk 和Run,并且Idle已经被设置为初始状态(以橙色表示)。所以Animator组件生效时会一直处于Idle状态,如果在Animation Clip的属性中勾选了 “Loop Time”,那么该动画会循环播放,否则播放一次GameObject就会停止。这种效果在GameObject是背景的大树,花草什么的就够用了,因为它们都不会动。但是我们的主角大部分情况下还是需要移动的,所以我们机智地也准备好了走路(Walk)和奔跑(Run)两种动画。不过Unity还没有智能到在物体移动的时候自动跳转到名为“Walk”的状态上,所以这个切换的时机还是需要我们控制的。记得我们之前说的Parameters面板嘛?它们就是在这里排上用场的。

让我先暂时假定一种方案:

那么我们可以定义两个Parameter来模拟过渡条件:

状态间的过渡关系可能有五种:

要创建一个从状态A到状态B的过渡,直接在状态A上 鼠标右键单击 > Make Transition并把出现的箭头拖拽到状态B上点击鼠标左边即可。而设置对应于某个过渡关系的过渡条件,直接选中过渡线并在Inspector窗口中的Conditions属性一栏添加即可(添加的条件为&&关系,即必须同时满足)。

注参考: https://blog.csdn.net/qq_28849871/article/details/77914922

以上是关于动画系统-Animator详解的主要内容,如果未能解决你的问题,请参考以下文章

Unity 动画系统 Animation 和 Animator的小实例

unity 对Animator动画系统的研究

Unity3D之Mecanim动画系统学习笔记:Animator Controller

Unity—ParticleSystem(粒子系统)与Animator(动画状态机)批量管理器

Unity动画系统Animator动态添加事件

unity 动画系统不会用