江上宿六です。
3Dゲームでキャラクターを扱うとなると避けて通れないのがアニメーションです。
やってみたらそんなに難しいわけでもないと思いますけど、若干煩わしい所が
あったりする感じで、ともかくしっかりと覚えておきたいものです。
Blenderでモデルを出力する時、アニメーション付きで出力させる事ができます。
インポートしたファイル内に顔や胴体などのパーツなどがある中、赤線で囲われた
再生ボタンがついたようなファイルがアニメーションのファイルとなっています。
モデルを選択してインスペクターを見ることで色々と確認をする事ができます。
とりあえず今はClipsの所を選択して、分かり易く名前を変更するくらいですかね。
全てのアニメーションの"アーマチュア|"を消した感じにしておきました。 すると
アセットの方でも名前が変わるのが確認出来ると思います。
さて、これらを再生していくわけですがAnimatorControllerを使います。
アセットの所からCreate→AnimatorControllerと選択する事で追加出来ます。
→
こんなアイコンが追加されました。 開いてみると、このようにAnyStateとか
Entryとか書かれたパネルが表示されます。 これはAnimatorタブとしてシーンや
ゲームの画面と同様に管理されます。 これを使ってアニメーションを制御します。
↓
モデルなどに入っているアニメーションファイルをAnimatorタブ内の画面に
ドラッグ&ドロップする事でパネル(State)を追加する事ができます。
EntryからIdleに伸びているオレンジ色の矢印が最初に行われるアニメーションを
示しています。
とりあえずはこの状態での動きを確認するためモデルをシーンに配置し、
インスペクターでこのAnimatorControllerをセットし、ゲームを実行します。
だいたい想定通りのIdleアニメーションが再生されています。 ここではgifなので
ループしてますけど、初期状態ではループするように設定されていないので
必要ならばモデルファイルのインスペクターの所で設定しましょう。
ここのLoopTimeにチェックを入れるとループ再生するようになります。
もう一つアニメーションを追加し、そっちを最初に再生するようにしてみましょう。
↓
追加されたWalkのStateを右クリックし、SetasLayerDefaultStateを選択します。
オレンジ色の矢印がWalkに向かい、Walkがオレンジ色になりました。
ゲームを実行すると無事に再生するアニメーションが変わりました。
しかしこれではまだゲームで使える段階とは言えませんよね。 ゲームなどでは
多種多様にアニメーションが遷移していくわけですから。
次回はスクリプトなどを使ってその辺の制御を行いたいと思います。