見出し画像

Unityでアニメーションを制御する

今回はUnityでAnimationを管理、制御します!

UnityではAnimatorというひと固まりのデータにして
複数のアニメーションを切り替えたり、制御しています

これはNPCのアニメーションを制御しているAnimatorの画面です
BreathingIdle と Talkingという2つのアニメーションを交互に再生しています

BreathingIdleから下に伸びてTalkingに繋がっている矢印の中身を
見てみましょう

開始直後は立っているアニメーション
時間を進めて9秒近くを見てみると話しているようなポーズをしています

上に伸びている矢印も見てみましょう

今度は逆で、時間が経つと立っているアニメーションに戻ります

ループではなく任意のタイミングで切り替えたい

なにかボタンを押したとき、近づいたときなど
任意のタイミングで話し始める というようなこともできます

まずはAnimator左上にあるParametersというところ
+ボタンを押すと様々なParameterを作ることができます
今回はBool型の「Talk」を作成しました

そして先ほどのアニメーションの遷移の画面
さっきと違うのは下の方に追加されたConditionsというところです
Talkというフラグを設定し、それがTrueになったら話始める
というような設定にしました

逆もできますね
TalkというフラグがFalseになったら話すのをやめます

Scriptなどでこのフラグを切り替えてあげれば
自由に制御できますね

他にも追加してみる

このようにすれば3つのアニメーションを切り替えることができますね
さっき同様に、Smileというフラグを作成すれば
任意のタイミングで3つのアニメーションを切り替えることができるようになります

Animatorの便利なところ

基本的に骨格が同じ3Dモデル(人型など決まったかたち)であれば
この作成したAnimatorは他のNPCにも使いまわすことができます

幅を出したいのであればいくつかAnimatorのパターンを作成
NPC1は 立つ→話す
NPC2は 立つ→踊る
NPC3は 立つ→笑う

町人A、町人B にはNPC1のAnimatorを割り当て
町人C、町人D にはNPC2
町人E、町人F にはNPC3
のようにすると実行時に動きに幅も出て、変更する時に一括でできるので
便利ですね


今回はUnityのアニメーション制御の基本的なお話をしました

今回は以上となります!
ぜひフォローなどして行ってくださいね!