2017-06-29 6 views
0

アニメーターコンポーネントを含む2Dプロジェクトにスプライトがあります。現在のアニメーションがオンになっている現在のフレームを取得する方法を見つけようとしています。あなたは、具体的スプライトのコンポーネントとして各アニメーションを追加した場合は、このような何かを行うことができるだろうと、私を発見した:アニメーションが1になっている特定のフレームを見つける2D

if (animation["attack"].time > 0.333 < animation["attack"].time < 0.5) { 
    //do something interesting 
} 

これは、アニメーションの名前が攻撃であると仮定して、あなたのゲームを使用していますフレームレートを基準とする。 3つの異なるジャンプアニメーションがあり、アニメーションを歩いているキャラクターが歩行の異なる場所にいるときに使用されるので、より滑らかに見えます。これは私がアニメーションコンポーネントを使用していないので不可能です。私はこのようなものを試しました:

anim = GetComponent<Animator>(); 

if (anim.GetCurrentAnimatorClipInfo().animation.time > 0.333 < anim.GetCurrentAnimatorClipInfo().animation.time < 0.5) { 
    //do something interesting] 
} 

しかし、それは動作しません。誰でも何か提案がありますか?

答えて

0

アニメーターのAnimatorStateInfoを取得し、そのAnimatorStateInfoを取得します。 AnimatorClipInfo.clip.lengthAnimatorStateInfo.normalizedTimeを掛けて現在時刻を取得します。

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

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

これを行うことで得られる「時間」の通常の結果は何ですか? –

関連する問題