想定環境
- Unity5以上
概要
Unity標準のAnimator、分かりにくくないですか?
ステートベースで直感的にアニメーション遷移を作れる!最高!と思いきや、以下のような、グロいAnimatorを作ってしまうのは割とあるあるだと思います。
しかも、Animatorは基本的に一つのキャラに一つずつ必要になります。ポチポチとステートを作り、そのステートにアニメーションを当てはめ、という作業を全キャラ分・・・。軽く死ねますね。
というわけで、複数キャラに跨って使いまわせる汎用Animatorを作るテクニックの紹介です。(私の知っている限りUnity5系のころには標準搭載している機能なのですがあまり知られていないっぽい?ので記事化してみました。)
Animator Override Controllerを使おう!
はい、実はこんな便利なものがあります。使い方は公式リファレンスが十分丁寧に教えてくれているのでリファレンス見てね、で終わりなんですが、一応知見をここにまとめておきます。
名前の通り、こいつは「あるAnimatorをベースにして、そのステート内で再生するアニメーションを任意のアニメーションで上書きすることができる」というものです。
実際に作りながら解説してみます。
1.ベースとなるAnimatorを普通に作る
まずベースとなるAnimatorを用意します。
キャラによっては歩きモーションや攻撃モーションを複数持つことも考えられるので、A,B,Cといったようにとりあえず用意だけしておきます。
このAnimatorは、あくまでベースなので、実際にAnimationをあてがう必要はありません。ステートマシンの遷移部分だけ作っておけばよいのです。
2. Animator Override Controllerを作る
ベースを作ったので、次に実際のキャラクターに使用するAnimatorを作ります。
公式リファレンスに記述してあるように、Create -> Animator Override Controller を選択します。
すると、Animatorに似ているようで微妙に違うアイコンのアセットが作られます。これは実際のキャラに使用するAnimatorとなるので、きちんと命名しましょう。今回はゾンビに使いたいので、ZombieAnimatorとしました。
3. Inspectorで設定する
Inspectorを見てみましょう。
このような画面になっていると思います。
Controllerの部分に、ベースとして用意しておいたAnimatorをドラッグアンドロップなどで参照します。
するとこのような画面になります。
Original の列には、ベースとなる Animator のステートに参照されている Animation 名が表示されます。
Override の列に、その Animation と対応する Animation をドラッグアンドドロップなどで参照できます。
対応する Animation が無ければ、None のままで構いません。
以上です。
これで、ステートマシンを使いまわしつつ、別々のアニメーションをするキャラクターを簡単に量産できます。
はい、ちゃんと女ゾンビも男ゾンビも同じステートマシンで動いてますね。
ちなみに導入の際の注意ですが、さすがにステートマシンの遷移を Override側で変更などはできないので、遷移の体系が違うものを作る場合は、その都度 Animator を新規作成する必要があります。
以上、小ネタでした。
宣伝
本稿は現在絶賛公開中のスマホゲーム『たのしいさんすう』の開発で実際に使っているテクニックを紹介しています。ぜひぜひ、お手に取ってたくさんのゾンビたちと戯れていただければ幸いです。
【たのしいさんすう】
iOS: https://apps.apple.com/us/app/zombie-mathters/id1504347831?l=ja&ls=1
Android: https://play.google.com/store/apps/details?id=com.gamebox.sansuu
ディレクター様: https://twitter.com/gamebox7777
筆者: https://twitter.com/john95206