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);
本文详细介绍了如何在Unity中使用Animator.runtimeAnimatorController.animationClips获取动画片段,通过遍历检查动画名称来获取特定动画的长度。同时,文章还讲解了如何通过AnimatorStateInfo判断动画是否播放完成,这对于游戏开发中的动画同步和状态检测至关重要。
1万+

被折叠的 条评论
为什么被折叠?



