Unity - Animator组件

Posted chenzirong1999

tags:

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

Animator组件

Animator 是 Unity 中动画控制器的组件,相当于一个动画片段管理器。

我们知道在 Unity 中素材可以拖拽到游戏对象上,制作成称为 Clip 的动画片段,

如果该对象上没有 Animator 组件,那么也会同时创建 Animator 用来管理 Clip 的切换和触发等操作。

角色的多向动画

当控制一个2D角色(或3D角色)时,需要四个方向的移动动画,还需要四个方向的攻击动画。

之前想的可能是:制作8个 State,分别处理8段动画,然后在脚本代码中来回切换,就会出现密密麻麻的 State Transition

而 Blend Tree 可以很好的解决这个问题。

Blend Tree(混合树) 用于允许通过按不同程度组合所有动画的各个部分来平滑混合多个动画。

在一个 State 上创建一个新的 Blend Tree,然后双击进入。在 Animator 的参数面板中添加两个 float 变量x和z。

在 Inspector 面板中选择 Blend Type 2D simple directional,选择参考变量。

这时下面会出现一个 Motion 数组,在里面分别设置图中四个点的坐标和四个动画片段。

技术图片

 变量x和z用来表示角色的朝向,我们会在代码中进行设置。

Blend Tree 的神奇之处就在于,它能够根据你所设定的不同值的组合,去寻找相对应的 Motion

技术图片

 检测动画的播放状态

制作一个死亡动画不是问题,但是死亡之后如何判定动画是否播放完毕,然后进行处理?

比如现在要求死亡动画播放完之后,角色保持在死亡的那一帧,禁止播放其他动画。

首先是 Add Animation Event(添加动画事件):

在 Animation 面板,选择需要监听的动画片段,选中触发的关键帧,

右键添加动画事件,然后选择所需要触发的函数就可以了。

技术图片

这样动画播放到这一帧的时候,就会触发所选择的函数了。

然后就是 State Machine Behavior

选中一个 State 之后,在 Inspector 面板中点击 Add Behavior 添加一个状态机脚本。

技术图片

进入脚本,这里面最常用的三个函数分别是 EnterUpdateExit 函数。

分别是进入状态、更新状态和退出状态的时候会调用的函数。

在死亡状态后面新建一个状态,设置死亡动画播放完以后 Exit time 形式进入这个状态。

在刚添加的脚本中添加代码:

1     override public void OnStateExit(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
2     {
3         animator.enabled = false;
4     }

这样角色死亡动画播放完以后,会自动切换到一个空状态,切入之前会调用这个Exit函数,将动画控制器禁用。

以上是关于Unity - Animator组件的主要内容,如果未能解决你的问题,请参考以下文章

Unity -- Animation(旧版动画组件)和Animator(新版动画器组件)

Unity中获取Animator中动画片段的时长

unity3d study ---- 麦子学院---------- unity3d常用组件及分析 ---------- Animator动画状态机

unity2d在animator组件里一个anim动画运行的过程中怎样直接切换到另一个?

Unity 动画系统(Animation,Animator,Timeline)

unity animator 可以同时播放几个动作吗