人型3Dモデルを動かすまで(その3)

人型3Dモデルを動かす旅に
出ていたわけだが
旅!?
スゲー大変だったわ……
ええっ!?w


前回まででアセットストアからの3Dモデルダウンロードと、よくある不具合とその修正、アニメーターコントローラーの基本について説明できたと思う。今回はそのおさらいと、実際にグリグリ動かすまでの下準備を説明する。



3Dモデルを選択してみるとインスペクタービューに色々な情報が区切られて表示されている。これらがコンポーネントだ。インスペクタービューの一番下にAdd Compornent(コンポーネントを追加)と表示されているよね?つまり、インスペクタービューはコンポーネントを表示・追加する窓だと覚えよう。

そして3Dモデル(3Dオブジェクト)を動かすためには下記の要素(コンポーネント)が必要になる。

  • 3Dモデル
  • キャラクターコントローラー(プレイヤー制御コンポーネント)
  • アニメーター(モーションの情報)
  • スクリプト(動作の命令)




キャラクターコントローラー(CharacterController)はUnityに標準搭載されている便利コンポーネント。簡単に追加(Add)できる。カプセル型のコライダー(当たり判定)や傾斜角何度の坂まで登れるか、などが設定できる

ボタン押したら歩く、といった
シンプルな動作ならいらないけど
グリグリ動かすなら
このキャラコンを付けるらしいぞ
キャラコン……


アニメーター(Animator)

前回も紹介したけど
3Dモデルのモーション情報を
設定するためのコンポーネントだね



アニメーターコンポーネントのControllerにアニメーターアセットを割り当てよう

モーションがないと3Dモデルは棒立ちしたままになってしまう。人型3Dモデルとモーションは切っても切れない関係なのだ。3Dモデルがどう動くかをこのコンポーネントで設定する必要がある。基本的な設定方法は先日紹介したひよたま先生のページを参考にしてみてほしい。

モーションが大変な場合は
豆腐くんとか飛行機モデルとかだと
ごまかしが効くぞ
モーションがなくても
違和感のないモデルって
ことっすね



豆腐くん(ただのCube)。キャラクターコントローラーとスクリプトだけで動かしている。開発者に優しいエコなやつ

Run(走る)、Action(攻撃)を
設定したのがこれだ



Idleは待機という意味。車の停車をアイドリングって言うよね。この場合はキャピキャピするアイドルは関係ない
四角い「ステート」と
矢印の「トランジション」に
それぞれ設定をしてるんですよね
「待機」から「攻撃」と
「走る」から「攻撃」の
2つがあるのがわかるよね


アニメーターの基本は前述したひよたま先生のページしかり、インターネットで検索すると色々出てくるし、さほど難しくないので独学でも十分覚えられると思う。このアニメーターコントローラーに「ジャンプ」を追加してみよう。ショート動画で紹介だ!


一連の流れ。FootIKはモデルの足を地面と合わせてくれる補正機能なのでチェックを入れている。動画の後半、別ウィンドウを出して「Jump」を選択しているが、プロジェクトフォルダ内にあるモーションアセットが自動的に選択肢に表示されるようになっている。あらかじめモーションアセット(モーションの入った3Dモデルアセット)をプロジェクトフォルダに入れておかなくてはならない。無料で簡単に入れられる「StandardAssets」や「ユニティちゃん」、あるいはアセットストアからモーションをダウンロードしておこう(後述)

ほえー、このくらいなら
ボクにもできそう



ウォーリアパック バンドル1という良さげな無料アニメーションアセットがあったのでダウンロード&インポートしてみた。3Dモデルと同じく、アニメーションもアセットストアにはたくさんある。その多くは人型(Humanoidタイプ)の3Dモデル用に作られているので、色々な人型モデルに適用できるのだ

モーション探し楽しいっす!
色々あって迷うっすね!


モーション(アニメーション)は3Dモデルと違って「モーションだけのファイル(アセット)」というものがない。通常は3Dモデル(FBXファイル)の中にモーションデータが組み込まれているのが一般的だ。3Dモデル無しで「モーションだけ」を再生することはできないからだ。

だから3Dモデルごとインポートして
FBXファイルの中にあるモーションを
アニメーターコントローラーに
割り当てるというわけだ
何言ってるかよくわからないっすけど
かっこいいモーションを
使ってればそのうち覚えるっすね!


さて、もちろんアニメーターコントローラーでモーションを設定するだけでは3Dモデルは動かない。次回はいよいよアニメーターコントローラーを制御するスクリプトについて頑張って書く。Unityでのゲーム作りにおいて初心者最大の関門がこのスクリプト。そめ先生も勢いで書いているが果たして大丈夫だろうか……。色々不安だが頑張って書くぞ!