unity人物动画配置

前言

人物动画的配置是unity重要的一部分,今天来做的是入门级的人物动画配置

一、首先导入模型动画

1,人物模型导入后,我们会发现里面会有一些动画和人物骨骼:

如下图所示:
在这里插入图片描述
2,点击这个模型,就可以对模型的相关属性在inspector面板进行配置:

其中关于动画的是RigAnimation,对于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");
            
        }
    }
}

运行结果:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/xinzhilinger/article/details/109224600
今日推荐