选中playervisual,在右侧栏添加animator。
新建一个animator controller,
将其拖动到controller;
打开animator窗口;打开animation窗口;
新建一个animation;
创建后得到了新动画。
选中playervisual进行录像,录像只能对子对象操作,点击父对象就会停止录制。
在需要的帧选择对哪一部分进行改变。
动画重复。
动画制作的效果如下:
Ctrl+d 复制。
将新创建的animation拖进去。
选择新动画制作。
选择所有帧;
移动蓝色的小竖可以改变时间。
制作过渡;
创建条件;
选择是否自动触发;
设置条件。
实现动画条件的代码:
新建PlayerAnimator.cs,拖入到playervisual;
在Player.cs中添加:
private bool isWalking;
private void Update() { //在每一帧都运行代码
//在末尾添加
isWalking = moveDir != Vector3.zero; //运动方向不为0
}
public bool IsWalking() {
return isWalking;
}
PlayerAnimator.cs:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerAnimator : MonoBehaviour
{
private const string IS_WALKING = "IsWalking"; //为了减少出错而设置的常量
[SerializeField] private Player player;
private Animator animator;
private void Awake() {
animator = GetComponent<Animator>();
}
private void Update() {
animator.SetBool(IS_WALKING, player.IsWalking());
}
}
将左边player拖至右边的player框内;
最终实现的效果:
关于动画:
名称必须匹配,否则会找不到对象。
将动画换成已经制作好的。