Unityには、キャラクターや3Dモデルのアニメーション効果を実装するAnimatorControllerという機能があります。
AnimatorControllerは複数のアニメーションクリップを制御しており、これを利用することでアニメーションクリップを切り替えたり、複数のアニメーションを組み合わせたりといったことが可能になります。
本記事ではAnimatorControllerの基本的な使い方を、Cubeを回転させるアニメーションを作りながら紹介します。
なお、AnimatorControllerを理解するためには前提としてアニメーション機能の基礎知識が必要になるので、以下の「Unity入門 アニメーションを覚える」の記事を見て内容がまだわかっていない場合は、先にそちらの記事を読んでみてください。
AnimatorControllerを開く
前準備として、回転させるCubeを作成してください。
Cubeの設定はデフォルトで構いません。
まずはProjectビューで「Create」→「Animator Controller」を選択してください。
Assetsフォルダに新しくファイルが作成されました。これがAnimatorControllerファイルです。
今回は物体が回転するシンプルなアニメーションを作りたいので、AnimatorControllerのファイル名を「Rotate」に変更してください。
AnimatorControllerファイルをダブルクリックすると、Scene画面内にAnimatorの画面が表示されます。
アニメーションを作成する
回転するアニメーションを作成します。
Projectビューで右クリック→「Create」→「Animation」をクリックしてください。
Assetsにアニメーションクリップが作成されたのでファイル名を「Cube Rotate」に変更し、CubeのInspectorウィンドウにドラッグ&ドロップしてください。
これはアニメーションを作成しただけでは意味がなく、対象となるオブジェクト(今回でいうとCube)に追加して意味を持つからです。
CubeのInspectorウィンドウにアニメーションが追加されました。
今はCubeオブジェクトにアニメーションを設定しただけで、アニメーションの中身は空です。
そこでアニメーションに回転の動きを追加していきます。
「Window」メニューから「Animation」を選択してAnimationビューを表示してください。
Animationビューの「Add Property」→「Transform」→「Rotation」の+ボタンをクリックしてください。
以下の画像のようにタイムラインが表示されるので、Rotation.yの1:00のキーフレームの数値を360に変更してください。
これはCubeは1秒間でY軸を中心に1回転(360°回転)する設定です。
Sceneを実行してみましょう。
設定通り、Y軸を中心に1回転しました。しかし1回転するとアニメーションは終了します(上の画像はGIFなので繰り返し表示されています)。
Stateを作成する
それでは、AnimatorControllerの使い方に入ります。
Animator画面の何もないところを右クリックして「Create State」→「Empty」を選択してください。
「New State」という長方形が作成されました。
「New State」も含めてAnimator画面内にある長方形がStateというものです。
Stateとはアニメーションクリップを格納し様々な設定をする機能です。Stateの設定を調整することで、アニメーションの設定をすることができます。
今「Entry」Stateから「New State」Stateに矢印が伸びています。これを遷移と呼びます。
遷移はアニメーションの実行順序を指定するものなので、上の画像で言うと「Entry」の次に「New State」のアニメーションが実行されます。
各Stateの役割
ここで最初から用意されているStateについて、それぞれのStateの役割を簡単に解説します。
Entry
Entryは最初にアニメーションの遷移がスタートするStateです。
アニメーションの最初に設定したい動作はこのEntryから遷移させるようにしましょう。
Any State
Any Stateはどの状態からでも好きな状態に遷移できるStateです。
なので、Any Stateから遷移を以下のように伸ばせば、好きなように遷移可能になります。
Exit
Exitに遷移すると最初のEntryに戻ります。
つまり1連のアニメーションの最後のStateをExitに遷移させればアニメーションをループさせることができますね。
AnimatorControllerの使い方
各Stateの役割を理解したところで、先ほど新規作成した「New State」を「Cube Rotate」に変更します。
アニメーションをループさせる
次はStateの設定でアニメーションをループさせます。
「Cube Rotate」Stateを右クリックして「Make Transition」をクリックしてください。
白い矢印が表示されるので、「Exit」Stateにつなげてください。
Exitは最初のEntryに戻るので、これで連続して回転し続けるアニメーションができたはずです。
Sceneを実行して確認してみましょう。
アニメーションがループしていますね。
最後に
Unityでアニメーションを設定する方法をわかりやすく解説する為に、出来るだけシンプルなサンプルで記事を書いてみました。
複雑で難しく見えるアニメーションも、設定するオブジェクトの数が多かったり設定が細かいだけだったりします。
より詳しいAnimatorControllerの使い方も紹介したいのですが、分量が多くなりそうなので本記事はここまでとします。今後続編を出しますのでお楽しみに!