質問: キャラクターをシーン上において、 そのオブジェクトにコライダーやRigidbody、コントローラなどをつけた状態で シーンを再生すると、設定したコライダーの位置からオブジェクトがズレてしまいます。 以下、再生までのかんたんな流れです。 Mayaで作成したFBXをインポート Unity側でRigを Humanoid に変更 (詳細で見てもしっかりと骨が認識されています) それをシーン上に配置、以下のコンポーネントを付与 * Animator ┗Controllerを仮にUnityちゃんのものに。 * Rigidbody ┗Freeze Rotationをチャック入れる。他は特にいじらず。 * CapsuleCollider ┗足元に小さく設定 * 移動用スクリプト ┗UnityChanスクリプトをほぼほぼ使いまわし。 この状態で再生すると、コライダーとキャラクターがズレて、キャラクターが浮いてるように見えます。 はじめは再生した瞬間、コライダーが下にズレていると思っていたのですが、どうもコライダーではなく、キャラクターが上にズレて再生されているような挙動です。 ![イメージ説明](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/23e27f405adde2477234797ee8573003.jpeg) ※キャラクターにSABoneColliderBuilderが付いているので、緑になっていますが、現在は取り除いたものです。 イメージのように、コライダーとキャラクターがずれて、コライダーが地面に当たったタイミングで止まる(正常な動き)ので、キャラクターが上に浮いているようになります。 コライダーのサイズを変えたりしたのですが、相変わらずです。 しかし、 AnimatorコンポーネントのAvatorを他のものに変えたり、コントローラを設定Noneに設定(アニメーションが割り振られていない状態)で再生すると、ズレることなく再生されました。 ちなみに、Unityちゃんやデモに使われるキャラクターなどに同じ設定をして、再生を押すと、 コライダーとキャラクターがズレることはありませんでした。 以上のことから fbxのAvatorファイル(Rig?)に問題があると思っているのですが、 何一つ問題が見つかりません。 Maya側での設定などが影響しているのでしょうか? Unity側の設定が影響しているのでしょうか? 憶測でもいいので、何かアドバイスや補足の要求などございましたら、 コメントのほどよろしくおねがいします。 説明が長くなってしまい、申し訳ありません。
回答: 「モデルの原点」と「モーションの原点」が合っていないのではないでしょうか。 文章だと説明しづらいのですが、例えば 「原点がヘソの部分にあるモデル用のモーション」を 「原点が足元の部分にあるモデル」に適用すると、 本来ヘソが位置する部分が足元に当たるわけで、宙に浮いたようになります。 Humanoidであればある程度マッチするはずですが、 モーション設定などで原点の設定がおかしくなっている可能性があります。 「Root〜」のようなパラメータを確認してみてください。 憶測ですが参考になれば幸いです。