【Unity】現在再生をされているアニメーション情報を取得する方法

今回も「Unityではじめる2Dゲーム作り徹底ガイド」から勉強したことで、これは便利だと思っていることを紹介します。(P230ぐらいまで) 今回は、現在再生をされているアニメーションをスクリプトで取得する方法です。

Unityではじめる2Dゲーム作り徹底ガイド スマートフォンでも遊べる本格ゲーム開発に挑戦Unityではじめる2Dゲーム作り徹底ガイド スマートフォンでも遊べる本格ゲーム開発に挑戦
大野 功二

SBクリエイティブ
売り上げランキング : 5252

Amazonで詳しく見る

UnityのAnimatorで設定できるのは、パラパラ漫画のようなスプライトの遷移だけではありません。 positionやcolliderの範囲などコンポーネントのパラメーターも設定できます。

GetCurrentAnimatorStateInfo

GetCurrentAnimatorStateInfoを利用して、アニメーションのState情報を取り出します。 [c] //引数0はLayerのdefault。 //上から順番の0,1,2,3.....のように割り当てられます。 AnimatorStateInfo stateInfo = animator.GetCurrentAnimatorStateInfo(0);

[/c]

これで、現在実行されているアニメーションの情報を取り出すことができます。

アニメーションの情報

取り出せる情報は色々あります。

  • nameHash : Stateの名前
  • tagHash : タグ名
  • length : stateの長さ(秒)

[c] //使用例1 if(stateInfo.nameHash == Animator.StringToHash("Base Layer.Run"){

}

//使用例2(ただし処理速度が遅い) bool hoge = stateInfo.IsName("Base Layer.Attack");

[/c]

[Base Layer][Animator]のレイアーを指定します。

2015-3-3-ffdsa