kidoOooOoooOOom

IT系で開発やってます

UnityのAnimator機能チュートリアル

Unity本を見ながらMecanimのAnimator機能を触ってみた。まずはRaw Mocap Data For MechanimをAssets storeからDL。
このアセットにはサンプルのモーションがいくつか入っているので、これを導入するだけでそれっぽいアニメーションを作れることができる。
Animatorを使うには、[Windows]-[Animator]を選択。
このままでは何も表示されないので、Project ViewのLocomotion SetUp からLocomotionを選択するとサンプルのアニメーションステートマシンが表示される。

Stateを繋げている矢印がTransitionで、遷移条件や遷移の速度を編集することができる。
例えば、Idle状態からWalkRun状態へのTransitionで、Conditionsに

  • Spped > 0.5
  • Direction > -30
  • Direction < 30

と設定されていた場合、Idle状態のときにSpeedが0.5より出てかつ移動しようとしている方向が±30°の範囲内であればWalkRunに遷移するといった流れである。
ではここで、Spaceボタンを押したらJump状態に遷移するというアニメーションを作る。
まず画面上でパラメータを追加し、パラメータのタイプはBool、初期値はfalseとする。
次にAnimatorWindows上で右クリックして空のStateを作成する。そのStateにジャンプのMotionをひも付ける。
JunpのStateができたら、WalkRun上からJumpへTransitionを引いて、逆のTransitionもひく。WalkRunからJumpへのTransitionの条件として、Jump == trueを追加する。
これで、AnimatorのJumpパラメータがtrueになった場合にWarlRunからJumpへ遷移することが可能になった。
次に、実際にアニメーションをするキャラクターにScriptを追加し、Spaceボタンが押されたら JumpフラグをONにして、それ以外だったらfalseに戻すという処理を書く。

function Update () {

	var animator = GetComponent(Animator);
	
	if(Input.GetKey(KeyCode.Space)){
		animator.SetBool("Jump", true);
	}
	
	var state : AnimatorStateInfo = animator.GetCurrentAnimatorStateInfo(0);
	
	if(state.IsName("Locomotion.Jump"))
	{
		animator.SetBool("Jump", false);
	}
}

これでキャラクターにジャンプアニメーションが追加された。
もっと早いタイミングでジャンプさせたいといった調整は、Transitionの中のアニメーションブレンドにおいて実行できる。

以上でUnity4入門読了。次はUnityでゲーム作る本を進めていきます。

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

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