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