通过获取层级动画判断是否正在播放
注意:名字是动画状态机的动画名字 而不是条件参数名字
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerMove : MonoBehaviour
{
//动画
private Animator ani;
//状态信息
AnimatorStateInfo stateinfo;
private void Awake()
{
//获取动画组件
ani = GetComponent<Animator>();
}
void Update()
{
//获取当前0层级动画信息
//层级序号从0开始
stateinfo = ani.GetCurrentAnimatorStateInfo(0);
//判断动画QSkill是否正在播放
Debug.Log("QSkill:" + stateinfo.IsName("QSkill"));
//判断Roll动画是否正在播放
Debug.Log("Roll:" + stateinfo.IsName("Base Layer.Roll"));
}
}
这里的 .IsName 方法格式比较严格
查的Unity脚本API是这样的
括号内可以直接写名字也可以 层级.动画名字来写
//正确写法
//第一种写法,直接写名字
Debug.Log("QSkill:" + stateinfo.IsName("QSkill"));
//第二种写法,层级.名字
Debug.Log("Roll:" + stateinfo.IsName("Base Layer.Roll"));
//错误写法
//第一种,注意事项层级名字,不是直接写Base
//Debug.Log("QSkill:" + stateinfo.IsName("Base.QSkill"));
//第二种,注意层级的名字,空格也要打上,千万不能忽略
//Debug.Log("Roll:" + stateinfo.IsName("BaseLayer.Roll"));