■一般的なキャラクターのGameObjectの作り方
- 空のゲームオブジェクトを作成し、FBXのモデルなどはこの子オブジェクトとする
- 移動や回転などのスクリプト、RigidBody、Animatorなどのコンポーネントは親オブジェクトにアタッチする
- アタッチしたAnimatorに子オブジェクトにしたモデルのAvatarと、モデルに使いたいAnimatorControllerをセットする
- つまり、移動等の処理は親オブジェクトが一元管理し、キャラクターの素材となるオブジェクトが子として入っているイメージ
今回は3人のキャラクターをCharacterという空オブジェクトにまとめたものと、キャラクターの中心を表すためのGameObjectと、影のPlaneを子オブジェクトにした。
ちなみに、これ知っておくとAssetStoreでDLしてきたモーションやSampleAssetsのスクリプトなどを試すのが楽になる。(子オブジェクトとAvatarを差し替えれば良いことがわかる)
なお、人間のモーションを流用するときはProjectのモデルを選択し、Inspectorに表示される「Rig」のAnimation TypeをHumanoidにする必要がある。
このときConfigure...を押すとボーン(関節?)の状態が表示されるが、対応するボーンが存在せずマップが赤くなっていることがある。MMDモデルはUnityで動かすことを想定していないので、このような事態が割と良くある。
本当なら対応するボーンを手動で指定して、マップを全てグリーンにする必要があるようだが、多少赤い箇所が含まれていてもモーションに差し支えないケースがある。赤い箇所が含まれていても、試すだけ試してみると良い。動かしてみてダメそうなら、ボーンの問題をどうにかする必要がある。
ちなみに、この画面のときHierarchyにはボーンのオブジェクトが表示される(表示されないときもあるが原因不明)。どの関節がどこにあるか調べるのに便利。MMDやFBXなどのモデリングではボーンにナンバリングするようなので、この番号を頼りに必要な部位を探したりする。
■キャラクターチェンジ
*実装方法はあくまで一例です要点
- モデルの子オブジェクトをあらかじめ複数用意しておき、操作しているキャラ以外は全員非アクティブにしておく
- チェンジの際にはモデルのアクティブとAvatarを切り替える
0 件のコメント:
コメントを投稿