通过代码控制动画状态机播放角色行走动画(不会实现行走效果);

资源使用的是Unity自带的角色控制器里的模型和动画;

一、前期

角色的创建和资源的准备这里不多说;

二、Animation Controller方面

1.首先把需要的素材先准备好吧(模型和动画)

2.新建一个Animation Controller并打开,然后将动画按下图那样拖进去并摆好

3.将动画之间连线,在状态机里的动画上点击鼠标右键,选择Make Transition引出一个箭头,按照下图方式连接(要记得线要有来也有回)

4.创建三个变量,分别是float类型的Speed变量和Turn变量,bool类型的isRun变量

5.点击状态机里箭头,说通俗点就是if判断功能,然后按下图操作(这里要特别注意一下图中的第二步,如果不消勾的话动画播放完才会停止,具体可以实际体会一下)

6.添加判断条件,如果这个条件成立那么箭头就会打开

7.每个箭头都要有条件,所有箭头的条件看下图

三、角色设置方面

1.将刚才创建好的Animation Controller给角色的Animator属性,如果角色没有Animator那么就创建一个

2.给角色创建一个脚本,命名为PlayerAnimator,打开脚本编辑

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayerAnimator : MonoBehaviour {

private Animator anim;      // 定义一个变量anim

// Use this for initialization
void Start () {
    anim = GetComponent<Animator>();        // 获取角色的animator属性并交由anim变量
}

// Update is called once per frame
void Update () {
    anim.SetFloat("Speed", Input.GetAxis("Vertical"));      // 将键盘W和S的值传给Animation Controller中的Speed变量;
    anim.SetFloat("Turn", Input.GetAxis("Horizontal"));     // 将键盘A和D的值传给Animation Controller中的Turn变量

    // 判断LeftShift键是否按下,然后将值传给Animation Controller中的isRun变量
    if (Input.GetKeyDown(KeyCode.LeftShift))
    {
        anim.SetBool("isRun", true);
    }
    if (Input.GetKeyUp(KeyCode.LeftShift))
    {
        anim.SetBool("isRun", false);
    }
}

}

四、测试阶段

现在运行一下看看效果;