通过代码控制动画状态机播放角色行走动画(不会实现行走效果);
资源使用的是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);
}
}
}
四、测试阶段
现在运行一下看看效果;