Unity3D_混合树控制人物奔跑

有时候一个Legacy或者Mecanim动画不能很好的控制人物移动,这时候我们就可以通过混合树来控制了。
首先把我们的人物模型拖进场景
首先把默认状态选择,这里在我们看看人物能不能移动
Unity3D_混合树控制人物奔跑_第1张图片
Unity3D_混合树控制人物奔跑_第2张图片
然后我们进行操作;点击Windows里的Animator选项Unity3D_混合树控制人物奔跑_第3张图片
混合树创建步骤:1.右击出现creat state -> from blend Tree
Unity3D_混合树控制人物奔跑_第4张图片

Unity3D_混合树控制人物奔跑_第5张图片
配置混合树
Unity3D_混合树控制人物奔跑_第6张图片
Unity3D_混合树控制人物奔跑_第7张图片
using UnityEngine;
using System.Collections;

public class AnimatorTest : MonoBehaviour {

private Animator anim;
private float horizontal;
private float vertical;
//旋转的速度
public float rotateSpeed;
//向前跑的速度
public float speed;

// Use this for initialization
void Start () {
    anim = GetComponent();
}

// Update is called once per frame
void Update () {
    //
    horizontal = Input.GetAxis("Horizontal");
    vertical = Input.GetAxis("Vertical");
    //W键或者上方向键按下的时候
    if (Input.GetKey(KeyCode.W)|| Input.GetKey(KeyCode.UpArrow))
    {
        //如果只按下W键或者上方向键按下的时候
        anim.SetBool("Run",true);
        transform.Translate(Vector3.forward * Time.deltaTime * speed);
        //如果按下W键或者上方向键按下的时候同事按下AD或者左右方向键的时候执行左跑或者右跑的动作
        if (vertical != 0)
        {
            anim.SetFloat("RunValue", horizontal);
            transform.Translate(Vector3.forward * Time.deltaTime * speed * vertical);

            transform.Rotate(Vector3.up * Time.deltaTime * rotateSpeed * horizontal);
        }
    }
    //W键或者上方向键抬起的时候执行idle动画
    if (Input.GetKeyUp(KeyCode.W) || Input.GetKeyUp(KeyCode.UpArrow))
    {
      anim.SetBool("Run",false);
    }
}

}
Unity3D_混合树控制人物奔跑_第8张图片

你可能感兴趣的:(unity3d,c#)