前言
人物动画的配置是unity重要的一部分,今天来做的是入门级的人物动画配置
一、首先导入模型动画
1,人物模型导入后,我们会发现里面会有一些动画和人物骨骼:
如下图所示:
2,点击这个模型,就可以对模型的相关属性在inspector面板进行配置:
其中关于动画的是Rig和Animation,对于Rig需要选择的Animation Type,因为我们配置的是人物动画,所以选择的是Humanoid,还有其他的选项可以选择
如图:
而对于Animation选项的面板的主要功能为:
Animation中比较常用的就是 Loop Time,勾选上后可以让动画重复播放,当我们配置人物走动、跑这些连续动作时就可以勾选,而跳跃这种动作可以选择不勾选
二、动画器控制器的创建
1.创建一个动画器控制器
直接在资源里面右键(或导航栏资源上单机)里的创建一个动画器控制器即可,命名后点击就会打开Animator面板,就可以对于动画进行配置等操作:
2,配置一个动画
2.1、配置动画,首先需要创建状态,按下图在空白处右键即可创建一个空的状态,然后再Inspector面板上面就可以看到属性,可以进行详细的配置:
2.2、接下来是另外的元素,连接动画状态转换的线 ,右击动画状态就会出现创建线的选项,同时在左上角的Paramerers下的加号里面有四种选项来控制:
1,float 和 int可以使用数字大小来控制动画
2,bool类型控制可以连续触发事件
3,Trigger只能一次性触发事件
·
3,为人物添加动画
选中人物,为人物添加Animator组件,并将刚刚创建的动画器控制器和骨骼拖入,
三,使用脚本调用四种切换状态来控制
首先在脚本中获取Animator:
private Animator anim;
void Start()
{
anim = player.GetComponent<Animator>(); //player为挂在animator组件的人物
}
然后使用四种控制状态适时的控制动画的转换:
anim.SetTrigger("one"); //one为Trigger的名字
anim.SetBool("New Bool",false); //bool类型的控制
anim.SetInteger("demo", 12); //int类型
四,实例
描述:点击一系列按钮来控制人物动画的播放
动画器控制器:
场景:
代码:
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
public class Buttonone : MonoBehaviour
{
//所有Button的父节点
public Transform btnParent;
//private Button[] btns;
private Button[] btns;
private Animator anim;
//有Animator组件的人物
public GameObject player;
void Start()
{
anim = player.GetComponent<Animator>();
//初始化数组长度
btns = new Button[btnParent.childCount];
//便利父节点下所有的按钮
for (int i = 0; i < btns.Length; i++)
{
//赋值按钮
btns[i] = btnParent.GetChild(i).GetComponent<Button>();
//为按钮添加点击事件
btns[i].onClick.AddListener(nClick1);
}
}
/// <summary>
/// 按钮点击事件
/// </summary>
private void nClick1()
{
//按下时 判断当前点击的按钮的名字
string btnName = EventSystem.current.currentSelectedGameObject.GetComponent<Button>().name;
if(btnName=="Button")
{
anim.SetTrigger("one");
}
if (btnName == "Button (1)")
{
anim.SetTrigger("two");
}
if (btnName == "Button (2)")
{
anim.SetTrigger("three");
}
if (btnName == "Button (3)")
{
anim.SetTrigger("four");
}
if (btnName == "Button (4)")
{
anim.SetTrigger("five");
}
if (btnName == "Button (5)")
{
anim.SetTrigger("six");
}
}
}
运行结果: