Unity備忘録26頁目「3Dモデルのアニメーション1」

江上宿六です。

 

3Dゲームでキャラクターを扱うとなると避けて通れないのがアニメーションです。

やってみたらそんなに難しいわけでもないと思いますけど、若干煩わしい所が

あったりする感じで、ともかくしっかりと覚えておきたいものです。

f:id:y6yegami:20181130183814p:plain

Blenderでモデルを出力する時、アニメーション付きで出力させる事ができます。

インポートしたファイル内に顔や胴体などのパーツなどがある中、赤線で囲われた

再生ボタンがついたようなファイルがアニメーションのファイルとなっています。

モデルを選択してインスペクターを見ることで色々と確認をする事ができます。 

f:id:y6yegami:20181130184432p:plain

とりあえず今はClipsの所を選択して、分かり易く名前を変更するくらいですかね。

全てのアニメーションの"アーマチュア|"を消した感じにしておきました。 すると

アセットの方でも名前が変わるのが確認出来ると思います。

 

さて、これらを再生していくわけですがAnimatorControllerを使います。

アセットの所からCreate→AnimatorControllerと選択する事で追加出来ます。

f:id:y6yegami:20181201095423p:plainf:id:y6yegami:20181201095429p:plain

こんなアイコンが追加されました。 開いてみると、このようにAnyStateとか

Entryとか書かれたパネルが表示されます。 これはAnimatorタブとしてシーンや

ゲームの画面と同様に管理されます。 これを使ってアニメーションを制御します。

f:id:y6yegami:20181201124749p:plain

f:id:y6yegami:20181201125204p:plain

モデルなどに入っているアニメーションファイルをAnimatorタブ内の画面に

ドラッグ&ドロップする事でパネル(State)を追加する事ができます。

EntryからIdleに伸びているオレンジ色の矢印が最初に行われるアニメーションを

示しています。

f:id:y6yegami:20181201114218p:plain

とりあえずはこの状態での動きを確認するためモデルをシーンに配置し、

インスペクターでこのAnimatorControllerをセットし、ゲームを実行します。

f:id:y6yegami:20181201142613g:plain

だいたい想定通りのIdleアニメーションが再生されています。 ここではgifなので

ループしてますけど、初期状態ではループするように設定されていないので

必要ならばモデルファイルのインスペクターの所で設定しましょう。

f:id:y6yegami:20181201145000p:plain

ここのLoopTimeにチェックを入れるとループ再生するようになります。

もう一つアニメーションを追加し、そっちを最初に再生するようにしてみましょう。

f:id:y6yegami:20181201145430p:plain

f:id:y6yegami:20181201145534p:plain

追加されたWalkのStateを右クリックし、SetasLayerDefaultStateを選択します。

f:id:y6yegami:20181201150232p:plain

オレンジ色の矢印がWalkに向かい、Walkがオレンジ色になりました。

f:id:y6yegami:20181201150405g:plain

ゲームを実行すると無事に再生するアニメーションが変わりました。

しかしこれではまだゲームで使える段階とは言えませんよね。 ゲームなどでは

多種多様にアニメーションが遷移していくわけですから。

 

次回はスクリプトなどを使ってその辺の制御を行いたいと思います。