ひとりまとめ

もろもろのメモ

UnityでMecanimの状態を取得したい!

Mecanimでやるアニメーションがとってもカンタンと聞いて、不意にUnityを始めてしまいました。前を全く知らないので完全にニワカですけども、プログラムも書かずに動きを切り替えたりできるのは、とってもいいですね。カンタン大歓迎!

 

だがしかし。まったくプログラムを書かないという訳にもいかない事態もあります。その一つとして、

「いまやってるアニメーションに合わせて、なんかする」

というとき。たとえば、ジャンプしてる時はある操作を受け付けないとか、なんかやっちゃうとか。

 

どうにかこうにか状態/ステートの取得と比較に成功したので、忘れないうちにメモ。

 

■前提

モデルにAnimator Controllerがアタッチされており、Animator Controllerにモーションが登録されているものとします。

また、モーションが設定されているレイヤーは、デフォルトのBase Layerということにしておきます。

 

■取得方法(C#)

モデルのAnimator Controllerを格納するために、箱を用意。

protected Animator animator;

 

Start()とかで、中身を設定。

animator = GetComponent();

 

Update()あたりで、現在のステートを取得。

AnimatorStateInfo stateInfo = animator.GetCurrentAnimatorStateInfo(0);

 

walkっていうステートだったらこうしたい!というチェックをする。

if(stateInfo.nameHash == Animator.StringToHash("Base Layer.walk")){

}

 このwalkというのは、Animator Controllerに配置したモーションのInspectorで設定した名前です。

f:id:g2_girichan:20140128145408p:plain

 

これでひとまず判定できました。ひとまずめでたし。

 

 

Unity4入門   最新開発環境による簡単3Dゲーム製作

Unity4入門 最新開発環境による簡単3Dゲーム製作