查找特定帧,动画在Unity 2D上

时间:2017-06-29 09:44:21

标签: c# animation unity3d

我在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]
}

但这不起作用。有人有什么建议吗?

1 个答案:

答案 0 :(得分:0)

让动画师&#39; AnimatorStateInfo然后是AnimatorStateInfo。将AnimatorClipInfo.clip.lengthAnimatorStateInfo.normalizedTime相乘得到当前时间。

 AnimatorStateInfo animationInfo = anim.GetCurrentAnimatorStateInfo(0);
 AnimatorClipInfo[] animationClip = anim.GetCurrentAnimatorClipInfo(0);

 float time = animationClip[0].clip.length * animationInfo.normalizedTime;