【UnityC#講座】AnimatorControllerの使い方

AnimatorController/アイコン

Unity2018.1.5f1
Windows10

AnimatorController/トップ

このブログでは何度もAnimatorControllerを扱ってきましたが、同じことを何度も説明しないといけないことが多くなってきたのでまとめ的な記事を書くことにしました。
ここではAnimatorControllerの基本的な設定とスクリプトの書き方を説明します。

■AnimatorControllerの部位の名称

AnimatorControllerを出す

AnimatorControllerはProjectウィンドウから出します。

Project > Create > Animator Controller

AnimatorController/アイコン

このようなアイコンが出ます。
さてこれをダブルクリックして開いてみましょう。

AnimatorController/全体

これがAnimatorControllerウィンドウです。
ひとつひとつ見て行きましょう。

Layers

AnimatorController/Layers

アニメーションもレイヤーで重ねることができます。
表情をつけたりピンピンした状態から瀕死の状態に変化させたりなど、部位ごとに別のアニメーションをさせるのに使います。
+ボタンで増やします。

Parameters

AnimatorController/Parameters

アニメーションを遷移させる条件を設定しスクリプトで操作する時に使います。
これも+ボタンで増やすのですが、こちらは4種の中から選ぶ必要があります。

AnimatorController/Parameters/Float,Int,Bool,Trigger

Floatは小数点以下の数値が使えます。
Intは整数。
BoolはTrue/Falseの2つの条件です。
TriggerはBoolのTrueしかないバージョンです。

AnimatorController/Parameters/Float,Int,Bool,Trigger/セット

設定するとこのようになります。

Stateとは

AnimatorController/罫線部分

次は罫線の部分に行きましょう。
ここはマウスホイールで拡大縮小が、ドラッグで画面を動かすことができます。
そしてそこにある長方形のものがStateでそれもドラッグで動かせます。
Stateとはアニメーションクリップを格納し様々な設定をする機能です。

AnimatorController/Entry,Any State,Exit

最初にあるこの3つですが、Entryは最初にアニメーションの遷移がスタートするStateです。
Any StateはどこからでもアクセスできるState。
そしてExitに遷移すると最初のEntryに戻ります。

Stateを出す

AnimatorController/Stateの出し方

Stateは罫線上で右クリックで出るCreate State > Emptyで作れます。
あるいはアニメーションクリップをそこにドラッグ&ドロップしても作れます。
Blend Treeはアニメーションを混ぜることで滑らかに遷移させるシステムです。
Sub-State Machineは複数のStateを一か所にまとめるフォルダみたいなものです。
Copy current StateMachineはそのレイヤーのStateの設定を丸々コピーしPastで貼り付けます。

AnimatorController/Stateを出すと

Stateを作ると一番最初に作ったものだけ黄色くなりEntryと線でつなげられます。
これはゲームを実行した時に一番最初に遷移されるStateです。

スポンサーリンク

Stateにアニメーションクリップをセットする

AnimatorController/State/Inspector

次はStateをクリックした時に出るInspectorをチェックしてください。
私は普段名前変えたりMotionとSpeedくらいしか使わないから他は自信を持って言えないのですが・・・

New Stateと書かれた部分からそのStateの名前を変えられます。
Motionはアニメーションクリップをセットするところで、そこにドラッグ&ドロップするか空欄の右端の丸ぽちをクリックしてセットします。
Speedは再生されるアニメーションのスピードです。
Normalized Timeは正規化されたアニメーションの再生時間だそうです。
Mirrorはチェックを入れるとアニメーションが反対になります。
Cycle Offsetはアニメーションのループを開始するための位置の値だそうです。
Foot IKは足を自然な動きにするための機能です。
Write Defaultsは設定されていないアニメーションの起動時のパラメータをデフォルト値として使うかどうかです。
Add Behaviourからはスクリプトをセットすることができます。

Transitionを出す

AnimatorController/Stateの出し方

TransitionとはStateをつなぐ線です。
アニメーションはそれに従って遷移します。

AnimatorController/Transitionでつなぐ

Stateに右クリックしてMake Transitionを選択し、遷移したいStateをクリックすることでセットできます。

Transitionを設定する

AnimatorController/Transition/Inspector

TransitionをクリックしてInspectorを見てください。
HasExitTimeはチェックを入れると遷移元のStateのアニメーションの再生が終わってから遷移します。
Settingsからはもっと細かく設定できます。
そしてConditionsからParametersをセットできます。

AnimatorController/Transition/Inspector/ Condition

+ボタンを押して出てきた欄に先ほど設定したParametersをセットします。

AnimatorController/Animator

さて、できたAnimatorControllerは動かしたいキャラクターのオブジェクト、ないしはその親オブジェクトのAnimatorコンポーネントにセットします。
Avatarが動かしたいキャラクターのデータです。
Apply Root Motionはチェックが入っているとアニメーションの動きを元に移動します。
それが困る場合はチェックを外しましょう。

■AnimatorControllerをスクリプトで操作する

さて、次はスクリプトでの記述の仕方です。

Start()でAnimatorコンポーネントを取得し、Animator.Set~という形で使います。
引数の””で囲まれているのは使うParametersの名前で、SetFloatとSetIntの場合は数値かそれぞれの変数が2つ目に入り、BoolだとTrueかFalse、あるいはBool変数が入ります。
SetTriggerはParametersの名前だけで良いです。

さてこのスクリプトですが書き方を教えるためのもので実際には動かせません。
動く実例は以下で紹介する関連記事をご覧ください。

■AnimatorControllerについての関連記事

Blend Tree

【UnityC#講座】ユニティちゃんにキソラちゃんがついてくるようにする【NavMeshAgent、Blend Tree】

【UnityC#講座】3D人型モデルを三人称視点で動かす【ユニティちゃん】

アニメーションを合成してより滑らかに遷移させます。

Any State、Animator.Play、Animator.CrossFade

【UnityC#講座】ユニティちゃんでもっとAnimator Controllerを上手く使いたい

スクリプトから様々な遷移のさせ方をします。

SetLayerWeight

【UnityC#講座】ユニティちゃんの表情を替える【SetLayerWeight】

Layerを使いキャラクターの表情を替えます。

AnimatorOverrideController

【UnityC#講座】AnimatorControllerを使いまわす【AnimatorOverrideController】

State,Transitionの設定をそのままに別にアニメーションクリップをセットして他のキャラクターに使います。

今回はこれで終わりです。
お疲れさまでした。

■関連記事

【Unity講座】ゲームの素材を別のプロジェクトに移す方法【Custom Package】

スポンサーリンク

目次に戻る