在Unity动画控制中,如何获得当前动画已经播放到的帧呢?
其实可以通过 clip.frameRate,clip.length,及normalizedTime来计算出具体的帧。
//当前动画机播放时长
currentTime = anim.GetCurrentAnimatorStateInfo(0).normalizedTime;
//动画片段长度
float length = anim.GetCurrentAnimatorClipInfo(0)[0].clip.length;
//获取动画片段帧频
float frameRate = anim.GetCurrentAnimatorClipInfo(0)[0].clip.frameRate;
//计算动画片段总帧数
float totalFrame = length / (1 / frameRate);
//计算当前播放的动画片段运行至哪一帧
int currentFrame = (int)(Mathf.Floor(totalFrame * clipTime) % totalFrame);
Debug.Log(" Frame: " + currentFrame + “/” + totalFrame);