我在2D项目中有一个精灵,里面有一个动画师组件。我试图找到一种方法来获取当前动画所在的当前帧。我发现如果你专门将每个动画作为一个组件添加到精灵中,你就能做到这样的事情:
if (animation["attack"].time > 0.333 < animation["attack"].time < 0.5) {
//do something interesting
}
这假设动画的名称是攻击,并且您使用游戏帧速率作为参考。这对于我正在做的事情来说是完美的,因为我有三种不同的跳跃动画,每一个用于当人物行走动画在他的步行中的不同位置时,所以它看起来更加平滑。然而这是不可能的,因为我没有使用动画组件。我尝试过这样的事情:
anim = GetComponent<Animator>();
if (anim.GetCurrentAnimatorClipInfo().animation.time > 0.333 < anim.GetCurrentAnimatorClipInfo().animation.time < 0.5) {
//do something interesting]
}
但这不起作用。有人有什么建议吗?
答案 0 :(得分:0)
让动画师&#39; AnimatorStateInfo
然后是AnimatorStateInfo
。将AnimatorClipInfo.clip.length
与AnimatorStateInfo.normalizedTime
相乘得到当前时间。
AnimatorStateInfo animationInfo = anim.GetCurrentAnimatorStateInfo(0);
AnimatorClipInfo[] animationClip = anim.GetCurrentAnimatorClipInfo(0);
float time = animationClip[0].clip.length * animationInfo.normalizedTime;