2014年11月26日水曜日

【Unity】Animator Controller の移動幅設定

【Unity の Animator メモ】

Animator Controller でCharacterのAnimationの遷移が作れる。
Unity の Animation は表示のみの Animation ではなく、実際のオブジェクトの移動も含む。
そのため、おそらく3Dモデルでのアニメーション作成時に実際の移動幅の設定も兼ねる。

では、プログラム側で移動幅をいじれないのか、というと
Animator Controller の Stateの中に speed の値があり、これをいじることで、
2倍や 0.5倍などにできる。ジャンプ力2倍などはこれで実装。

ただ、現状、Animatorのオブジェクトがコードがいじりづらく
下記のように Current のAnimationしか取得できない。



Animator anim = GetComponent<Animator>();

AnimatorStateInfo stateInfo = anim.GetCurrentAnimatorStateInfo(0);

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

  anim.speed = 6;

}




そのため、変更したいAnimationになった場合に設定してあげるような
Speed予約クラスを作ると良さげ。