第8回 - アニメーションさせよう【Unity講座2022】
アニメーションさせよう
1. プレイヤーの走りアニメーションを実装する
1-1. アニメーション用のウィンドウを追加する
アニメーションを実装する際にはアニメーション実装専用のウィンドウがあります。
デフォルトの状態だとそのウィンドウがないため追加します。
画面上のにあるwindow > Animation > Animation と Animator の2つを選択して表示させます。

表示させたウィンドウは適当な場所に配置しておいてください。

1-2. アニメーションコントローラーの追加
Unityでオブジェクトのアニメーションを管理するためにはAnimator Controllerというファイルを用います。
Animator Controllerでは複数のアニメーション(待ち状態、走る、歩く、死ぬ)の切り替えを行うことができるためアニメーションを実装する際は必須です。
-
Assets直下に「Animator」フォルダを作成します
-
Animator内に「PlayerAnimator」という名前のAnimator Controller を作成します

-
Hierarchyウィンドウから「Player」を選択し、Inspectorウィンドウから「Animator」コンポーネントを追加します
-
Animatorコンポーネントの「Controller」に「PlayerAnimator」をドラッグアンドドロップします

1-3. アニメーションコントローラーにStateを追加
Stateというブロックを線で結ぶことで、複数のアニメーションを管理・操作することができます。
今回は、待ち状態と走り状態、死亡状態の時のアニメーションを実装するのでStateを3つ作成します。
-
Animatorウィンドウ上で右クリックし、
Create State > Emptyをクリックしてください

-
一番最初に作成したStateはオレンジ色になります
-
オレンジ色になったStateを選択した状態でInspectorウィンドウを開きます
-
名前を「Idle」に変更します

-
1 と同様にして新しいStateを2つ作成します
-
3~4 と同様にして「Run」「Death」に名前を変えます
※ 画像はJumpになっていますが、正しくはDeathです。

1-4. 待ち状態のアニメーションを実装
待ち状態のアニメーションを実装します。
待ち状態は他のアニメーションを再生していない間は常に再生し続けるようにします。
オレンジ色のStateはゲーム開始時、一番最初に再生されるアニメーションです。
なので、このStateに待ち状態アニメーションを指定してあげることで、ゲーム開始時から待ち状態のアニメーションを再生できるようになります。
-
Idle State のInspectorウィンドウを開きます
-
Motion欄をクリックし、「Idle」を選択します
※Idleというアニメーションは複数ありますが、Assets\Asset FTTGR\Animations\Characters\Hero\Idle.animを選択してください

-
一度ゲームを実行してみましょう。プレイヤーが屈伸運動をしていればOKです!
1-5. 走り状態のアニメーションを実装
1-5-1. アニメーションを割り当てる
- Walk StateのInspectorウィンドウを開きます
-
Motion欄をクリックし、「Run」を選択します
※Runというアニメーションは複数ありますが、Assets\Asset FTTGR\Animations\Characters\Hero\Run.animを選択してください
1-5-2. アニメーションを切り替える機能の実装する①(Unity)
-
Animatorウィンドウを開き、左上のParametersタブに切り替えます
-
タブの右上にある「+」をクリックして、「Bool」を選択します

-
名前は「isRun」にしてください
-
Stateを右クリックすると「Make Transition」が選択できます。以下の画像のように矢印をつないでください
Make Transition
Make Transition を選択すると矢印が現れます。この矢印で繋いだState間でアニメーションの切り替えができるようになります。また、切り替え方向は矢印一つで一方向です。「Idle」から「Run」につないだ場合は、「Idle」から「Run」へアニメーションの切り替えを行えますが、「Run」から「Idle」へのアニメーションの切り替えはできません
-
isRunがtrueの時は「走り状態」、falseの時は「待ち状態」アニメーションになるようにします。
「Idle」から「Run」のTransitionを選択してInspectorウィンドウを見ます -
「Idle」から「Run」に変移する際のラグをなくします。これで、isRunがtrueになったとき、すぐに走りアニメーションに移り変わります。
「Has Exit Time」のチェックを外し、「Transition Durations in seconds」を0にしてください。

-
isRunがtrueになったときにこの遷移が動くように設定します。
Inspectorウィンドウの「Conditions」を以下のようにしてください。

-
同様に「Run」から「Idle」への矢印も設定してください。
※ 「Conditions」の設定に注意

1-5-3. アニメーションを切り替える機能の実装する②(Script)
-
PlayerMove.csを開きます -
Playerに充てられているAnimatorコンポーネントの情報を入れる変数を定義します
既存のコードの変数定義部分(7行目あたり)にコードを追記しますcsharpprivate Animator animator; -
走り状態かどうかを管理する変数を定義します
※既存のコードの変数定義部分(7行目あたり)にコードを追記しますcsharpprivate bool isRun = false; -
Start()内にPlayerに充てられているAnimatorコンポーネントの情報を取得するプログラムを書きます
※既に書かれているコードを消さずに追記してくださいcsharpvoid Start() { rb = GetComponent<Rigidbody2D>(); /* 追記部分 ↓ */ animator = GetComponent<Animator>(); /* 追記部分 ↑ */ } animator = GetComponent<Animator>(); -
Update()内に走り状態かそうでないかを切り替えるプログラムを書きます。※既に書かれているコードを消さずに追記してください処理の流れ
- AまたはDキーが押されたら
isRunをtrueに、それ以外の場合はfalseにする - その
isRunをanimator.SetBool()関数を使って 1-5-2.3 で作成したAnimatorウィンドウにあるisRun変数を変更することでTransitionが動作するようになり、アニメーションの遷移ができるようになります
csharpvoid Update() { Vector2 position = transform.position; if (Input.GetKey("d")) { position.x += speed; /* 追記 ↓ */ isRun = true; /* 追記 ↑ */ } else if (Input.GetKey("a")) { position.x -= speed; /* 追記 ↓ */ isRun = true; } else { isRun = false; } /* 追記 ↑ */ transform.position = position; if (Input.GetKeyDown(KeyCode.Space) && !isJumping) { rb.velocity = Vector2.up * jumpPower; isJumping = true; } /* 追記 ↓ */ animator.SetBool("isRun", isRun); /* 追記 ↑ */ }1-6. 実践:死亡状態のアニメーションを実装
走り状態のアニメーションを実装するときの方法を参考にして死亡状態のアニメーションを実装してみましょう!
ヒント
HPの管理は
HPManager.csで行っています。このファイル内でHPを管理するlifeCountが0になった場合に、Death State に移動できるように設定してあげればいいでしょう。※死亡アニメーションがループ再生される場合
Deathアニメーションは Asset FTTGR のを使用していますが、このアニメーションがデフォルト状態だと、ループ再生がtrueとなっています。そのため、ループ再生をfalseにしなければいけません。-
Assets/Asset FTTGR/Animations/Characters/Hero/Death.animに移動し、Deathを選択して、Inspectorウィンドウを見てください。 - 「Loop TIme」のチェックを外します。
- AまたはDキーが押されたら









