4. アニメーターでキャラクターの動きを変化させよう

上下左右の動きのアニメーションを作成しよう

2つめ以降のアニメーションはAnimationウィンドウの左上のプルダウンメニューから追加して作成する事ができるようになっています。

現在は下向きのアニメーションのDownのみが表示されている状態ですが、Create New Clip...をクリックして上、右、左向きのアニメーションも作成してみましょう。

上下左右のアニメーションのそれぞれの繋がり、トランジションを設定しよう

次にAnimatorウィンドウを確認すると、先ほど作成したそれぞれのアニメーションの名前がついた矩形の要素が追加されているのが確認できるかと思います。 ここではそれぞれどのアニメーション同士の、お互いがどういった条件で遷移するか、を設定する作業を行います。

それぞれのアニメーションの位置を編集しやすい場所(上下左右の十字方向)にドラッグして移動させ、互いに矢印のトランジションを伸ばしてつなぎ合わせます。

トランジションの追加方法はここではまずAny Stateを右クリックし、Make Transitionで矢印を作成、アニメーションの矩形にドラッグして決定します。

これを繰り返して4方向のトランジションを追加しましょう。

特定のタイミングで状態を変更するためのトリガーを作成しよう

それぞれの矢印を辿ってアニメーションの状態を変更させるには、矢印を動かすきっかけを設定する必要があります。

ここでは新たに4種類のトリガーを設定して矢印を動かすきっかけを作成します。

AnimatorウィンドウのParametersタブを開き、+ボタンからTriggerをクリックすると新しいトリガーが追加できます。 今回は上下左右のイベントが欲しいのでUpRightDownLeftを追加しておきましょう。

トランジションにトリガーを設定しよう

あとは先ほど作成したトリガーを各矢印のトランジションに設定します。

矢印を選択するとインスペクタウィンドウに表示される項目の中から、Contitionsの右下の+をクリックして、先ほど追加したトリガーをそれぞれ設定していきましょう。

また、このチュートリアルではアニメーションがどの状態にあっても互いに移動できるようにAny Stateからトランジションさせているので、Has Exit Timeのチェックが外れていますが、あるアニメーションから別のアニメーションへと遷移するトランジションを作成した場合にはHas Exit Timeにチェックが入った状態になっているので、その場合には状況に応じてチェックを外す必要が生じますので気をつけましょう。

Has Exit Timeを使用すると、現在再生中のアニメーションを最後まで再生させていから別のアニメーションに移動させるか、再生の途中でも移動するか、のどちらかを選択する事ができるようになっています。

あとはスクリプトを作成してLamaにアタッチするだけ

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class LamaScript : MonoBehaviour {

	//アニメーターのコンポーネントを入れる変数を宣言する
	Animator animator;

	void Start () {
		//アニメーターのコンポーネントを取得する
		animator = GetComponent<Animator> ();
	}

	void Update () {

		//ボタンの操作を検知したら
		if(Input.GetKeyDown(KeyCode.UpArrow)) {

			//アニメーターのトリガーに引数を渡す
			animator.SetTrigger ("Up");
		}

		//その他の方向も同様に設定する
		if(Input.GetKeyDown(KeyCode.RightArrow)) {
			animator.SetTrigger ("Right");
		}
		if(Input.GetKeyDown(KeyCode.DownArrow)) {
			animator.SetTrigger ("Down");
		}
		if(Input.GetKeyDown(KeyCode.LeftArrow)) {
			animator.SetTrigger ("Left");
		}
	}
}
完成プロジェクト