Unity Animator动画

Unity Animator动画基础教程

http://liweizhaolili.blog.163.com/blog/static/16230744201301675240114/


导入模型

Rig选项卡中Animation选项卡   AnimationType 选择 Humanoid

为模型创建AnimatorControler

Animator Controler 中可以通过拖拽动画到Animator面板 增加新的动画

右键每个动画可以选择动画之间的转换(Make Transition)

添加完两个动画的转换会出现一个箭头  

默认是根据时间(Exit Time)来转换的

在Animator窗口的左下角 有个Parameter 点击"+"可以创建自己定义的转换条件  有4种类型Float  Int Bool 和 Trigger

这里 以 Int 类型为例

例如添加一个"MotionState" 的Int类型变量作为转换的条件

此时点击Animator窗口中任意两个动作之间的箭头

在Inspector面板中可以看到Conditions 这里就是两个动作转换的条件  点击发现我们创建的 "MotionState"出现了

选择它 后面 可以选择是 大于(Greater) 等于(Equals) 小于(Less) 不等于(NotEqual) 默认是等于(Equals)

最后是相比较的值

通常会在脚本中定义一个和当前动作状态一直的枚举文件

例如:

所有转换为Idle的条件都为1

所有装换为Run的条件都为2




关键代码

using UnityEngine;
using System.Collections;

public class MoveStateControler : MonoBehaviour {

    private Animator animator;

    public string MOTIONSTATE = "MotionState";
	// Use this for initialization
	void Start () {

        //获取Animator组件
        animator = this.GetComponent<Animator>();

    }
	
	// Update is called once per frame
	void Update () {

        
        
	}

    void OnGUI()
    {
        if (GUI.Button(new Rect(10,10,100,50),"Run"))
        {
            //改变当前动作状态  MotionState改为 2 

            if (animator != null)
            {
                animator.SetInteger(MOTIONSTATE, 2);
            }
        }

        if (GUI.Button(new Rect(10, 60, 100, 50), "Idle"))
        {

            //改变当前动作状态 MotionState改为 1 
            if (animator != null)
            {
                animator.SetInteger(MOTIONSTATE, 1);
            }
        }



    }
}

点击 Run 和 Idle 按钮会相应改变模型的动作










你可能感兴趣的:(Unity Animator动画)