all green

プログラム、アプリ作成、Web等備忘録が中心です

Unity Animatorで再生中アニメーションの再生時間を取得する(Animator.Play()直後に取得する方法)

Animatorで再生中のAnimationClipの再生時間を取得する方法

環境
Unity 5.3.4f1



qiita.com
この記事を参考に実装してみようとしたら
Playの直後ではステートが切り替わっていないらしく時間が取得できなかった。


f:id:uwanosora22:20160519172057j:plain

animator.Play("Jump");
AnimatorStateInfo stateInfo = feverStart.GetCurrentAnimatorStateInfo(0);

→GetCurrentAnimatorStateInfoで取得できる値がIdleのまま

解決策

Animator.Update()を一度呼ぶ。

animator.Play("Jump");
animator.Update(0);
AnimatorStateInfo stateInfo = feverStart.GetCurrentAnimatorStateInfo(0);

deltaTimeを0で指定してアップデートを行う事で
GetCurrentAnimatorStateInfoで取得する値が変わることが確認できた。
→JumpのAnimatorStateInfo がで取得できる

微妙な感じもするので他にいい方法があればだれか教えてください。