Unity的Animator编辑器动画使用
Unity的Animator动画使用
Mecanim简介
Mecanim动画系统是Unity3D4.0开始引入的一套全新的动画系统,主要提供了下面4个方面的功能:
针对人形角色提供一套特殊的工作流。
动画重定向的能力,可以非常方便的把动画从一个角色模型应用到其他角色模型之上。
提供可视化的Animation编辑器,可以方便的创建和预览动画片段。
提供可视化的Animator编辑器,可以方便的管理多个动画切换的状态。
1、关键帧动画
2、动画事件系统
对于一个动画,我们还可以为其任意一帧添加一个事件:
2.1.首先,我们为Main Camera添加一个接收Event事件的组件:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerHealth : MonoBehaviour {
public void AddAnimatorEvent(string message)
{
Debug.Log(message);
}
}
2.2.下面我们在Animation窗口中的任意一帧添加一个事件,并调用AddAnimatorEvent方法同时传递一个字符串:
2.3.运行游戏就会看到输出了。
那么我们可以使用Event的功能做什么呢?试想一下,如果我们希望我们播放动画动作时候需要播放一个音效,就可以使用到事件的功能了。
3.动画状态
3.1创建一个Animator Controller
我们在Project视图中右击菜单中可以创建Animator Controller,下面我们看看新创建的Animator Controller:
首先,我们发现的是3个默认的状态,这些状态是Unity自动帮我们创建的同时也无法删除:
Entry:表示当进入当前状态机时的入口,该状态连接的状态会成为进入状态机后的第一个状态;
Any State:表示任意的状态,其作用是其指向的状态是在任意时刻都可以切换过去的状态;
Exit:表示退出当前的状态机,如果有任意状态指向该出口,表示可以从指定状态退出当前的状态机;
3.2创建新状态*Walk,Idle
3.3状态切换
在Mecanim中,动画之间的播放不再是通过调用诸如“Play”之类的方法进行切换了,而是通过判断参数的变换来进行状态即动画的切换。
3.3.1创建多个状态,同时配置好每个状态Walk,Idle**
3.3.1.1 Idle到walk
3.3.1.2 walk到idle
3.3.2Has Exit Time**
我们发现线条中有一个勾选项Has Exit Time,那么它是什么意思呢?
如果我们勾选了该项,在动画转换时会等待当前动画播放完毕才会转换到下一个动画,如果当前动画是循环动画会等待本次播放完毕时转换,所以对于需要立即转换动画的情况时记得要取消勾选。
还有一种情况时,当我当前的动画播放完毕后就自动转换到箭头所指的下一个状态(没有其他跳转条件),此时必须勾选该选项,否则动画播放完毕后就会卡在最后一帧,如果是循环动画就会一直循环播放。
3.4控制动画转换
我们在绑定了Animator组件的GameObject之上添加下面的新脚本组件,就可以实现通过按键来切换人物播放的动画了:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class TestAnimator : MonoBehaviour {
private Animator anim;
void Start () {
anim = this.GetComponent();
}
void Update () {
if (Input.GetKeyDown(KeyCode.W))
{
anim.SetBool("Walk", true);
}
if (Input.GetKeyUp(KeyCode.W))
{
anim.SetBool("Walk",false);
}
}
}