Unity Animator Animation详解及应用实例教程

刚刚在草稿箱里发现一堆草稿。。。修改一下赶紧发出来。。。

名词解释

什么是animation

本质上讲,动画就是以时间帧的方式记录物体某一时刻的状态,然后按一定顺序与时间间隔进行切换。所有软件的动画原理都是如此。

什么是Animator

animator,就是unity 用于管理多个动画播放状态的管理器,它允许你通过拖拽的方式管理你的动画顺序与触发条件。从而实现复杂的动画或交互效果。

然而,animator最最有魅力的地方,在于它对动画的融合、过度处理。这一点会在稍后讲到。

Animator界面简介

打开方式: unity 上方工具栏 > Window > Animation > Animator
Unity Animator Animation详解及应用实例教程_第1张图片
这个就是默认的界面了。主要包含3部分。即图层区、参数区、动画控制区

1,Layers 图层区

Unity Animator Animation详解及应用实例教程_第2张图片
点击Layers标签即可切换到图层区。图层用于动画重叠或隔离。这和photoshop的图层概念差不多。
动画隔离是你可以通过权重或判断图层动画运行状态,来指定播放某图层中的动画来实现隔离效果。
动画重叠则是最重要的部分,让不同的动画同时运行。比如在移动中的动画添加出拳攻击动作,就属于手脚动画的融合。

添加、删除图层

左键点击图层右边加号可以添加图层,右键点击图层,然后选择Delete就可以删除图层。

设置图层

左键拖拽图层最前面的按钮可以修改图层的顺序。左键点击涂岑右边的齿轮按钮,可以进入图层的设置页。双击图册图层名即可设置图层名称Unity Animator Animation详解及应用实例教程_第3张图片
Weight:权重,用于调整当前图层中动画对目标物体的影响程度。0是毫无影响,1是完全影响。如果多个图层都为1,那么就会进自动行动画平均融合
Mask:设置骨骼遮罩。设置当前图层对对象的哪部分起作用
sync :快速创建一个与原动画相同的状态
IK Pass:是否使用反最用力。力反馈系统

2参数区

Unity Animator Animation详解及应用实例教程_第4张图片
点击Parameters进入参数区。
Animator的参数主要用于动画控制。比如动画的播放状态。
点击右边的加号即可添加参数。参数类型分为浮点、整形、布尔、触发四种类型。其中比较特殊的就是Trigger参数。每次使用脚本调用该参数时,就会触发一次相关动作。

游戏中的移动、攻击、施法等动作的触发条件都是在这里设置的。比较值得注意的就是输入时如果使用的时Aix方式,即递增衰减输入法。 那么在离开按键的时候,按键值可能不为0,这样如果在动作判定的范围内时,会多次触发。所以这里记得要处理一下。

3 动画控制区

Unity Animator Animation详解及应用实例教程_第5张图片
动画控制区以功能模块的形式管理动画的运行逻辑。即一个模块代表一个动画或是一个状态。通过设置模块间的连接来实现设置动画的状态。

动画生命周期模块

动画的生命周期用于控制动画的启动和退出状态。当控制器到达某种状态时,就会启动相应的模块。
Any State:无论动画启动还是结束都会触发这个模块
Entry:动画启动时会运行该模块
Exit:动画结束时会运行该模块

动画控制器
创建控制器菜单

在空白处点击右键 >
Unity Animator Animation详解及应用实例教程_第6张图片
几个按钮的功能分别是:
Create State: 创建动画控制器。用于指定动画
Empty:创建一个空的动画控制器。用于设置单个动画
FromSelected clip:从已选择的动画创建新的模块
From New Blend Tree: 创建动画混合树。用于设置需要线性过度的多个动画混合器。
Create Sub-State Machine:创建动画集 。动画集就是一个容器。包含一个逻辑画布。
Copy current StateMachine:将当前所在的动画集,复制在剪切板中
Paste:从剪辑板粘贴动画集或动画控制器到画布中
值得一提的是,当我们单击任何一个模块,按ctrl+c ctrl+v都可以实现复制粘贴的功能。

比较关键的功能就创建空动画控制器Empty、动画混合树Blend Tree、以及动画集合Sub-State Machine。

标准动画控制器Empty

创建好一个动画模块后,点击这个模块Inspector中就会显示相关的设置Unity Animator Animation详解及应用实例教程_第7张图片
Motion:动画文件或指定的动画状态机
Speed:动画播放速度
MotionTime:动画时间
Mirror:勾选后会镜像播放。比如你
Foot IK:勾选后开启足部IK。脚部会跟随地面角度而产生变化
Transition:在这个列表中,显示所有与此模块有关系的父或子模块。点击列表中的某项,就会显示两个模块的过渡设置
Unity Animator Animation详解及应用实例教程_第8张图片
红框部分:是连接关系选择列表。
蓝框部分:是两个动画模块间的过渡设置。所有的改变都会直接在下方的时间轴显示。Unity Animator Animation详解及应用实例教程_第9张图片
红框内是当前帧的位置。preview中会显示当前的动作。
蓝框所在就是动画时间。下方相同的块,就是另一段动画的时间轴位置
拖拽紫色部分,用于设置两个动画切换时的过度。这个范围越大,两段动画就会被融合的越平滑。黄框内的灰色的部分,是不会播放的部分。也就是说,也可以通过设置这个,来达到剪切动画头尾的效果。你有可能会问,如果你想去掉动画中间的某个部分怎么办。。。组合使用就好了啊

紫框部分:是参数设置。如果当前动画是动画混合树(Blend tree),那么这里就会显示混合树的参数。
下方是动画的启动条件设置。相关参数实在参数区实现设置好的。

动画模块连接

Unity Animator Animation详解及应用实例教程_第10张图片
右键某个模块即可弹出连接菜单。
Set Statemachine Default State:这个是Entry模块专有设置。他决定一个动画集,启动时,默认播放的模块。一个动画集必须有一个default statie连接。
Make Transition: 点击该项后,再点击目标模块即可完成两个模块间的连接。
Unity Animator Animation详解及应用实例教程_第11张图片
点击连线中间的三角按钮,Inspector面板上就会出现从一个模块到另一个模块的触发条件等设置。相关设置参数含义在上方已经有所介绍了
Unity Animator Animation详解及应用实例教程_第12张图片

blend tree

行为混合树,用于混合多个动作,制作过度。特别适合连贯的动作。比如移动切换。
blend tree里面比较重要的一个设置就是 blend type
Unity Animator Animation详解及应用实例教程_第13张图片
blend type:
1D:适合a->b->c …的相邻的两个动作过度。无法从a过度到c。用这个来实现前后左右的移动,相邻的两个方向都可以过度比如向左向前,但相反方向的是无法过度的。比如向前向后。

2D simple Directional:在平面直角坐标系中输入xy两个参数,来决定任意两个方向上的动作融合。可以a>b,a>c。可以实现前后左右移动的无缝过度。但无法实现在同一方向上的多个动作点过度。

2D freeform directional:相比上一个可以实现更复杂的动画过度了。支持任意方向的多个动作过度。

Animation Event

animation event 是animator所控制的动画animation中的事件帧。
AnimationEvent相关的使用方法可以参见这篇教程https://blog.csdn.net/lengyoumo/article/details/110957550

你可能感兴趣的:(#,unity3D,使用,技巧笔记,游戏,视觉相关,animator,animation,动画控制器,unity,animator)