AnimationClip[] clips = GetComponent<Animator>().runtimeAnimatorController.animationClips;
foreach (var item in clips)
{
if(item.name == "jump")
{
// Debug.Log(item.length);
}
}
通过Animator.runtimeAnimatorController.animationClips 可以获取所有的动画片段 ,再通过遍历 判断动画名称即可取得对应动画片段的长度了
private AnimatorStateInfo stateInfo;
stateInfo = GetComponent<Animator>().GetCurrentAnimatorStateInfo(0);
if (stateInfo.normalizedTime >= 0.95f&&stateInfo.IsName("jump"))
{
Debug.Log("cnm完成了");
}
要判断动画是否播放完成 则可以通过动画层信息,stateInfo.normalizedTime 可以获得动画播放的状态 1表示播放到最后一帧,0表示第一帧 这里要注意的是,stateInfo 获取要放在update里面一直检测 就是这句话要一直被调用 否则会无效,stateInfo = GetComponent().GetCurrentAnimatorStateInfo(0);