Rigidbodyのオブジェクトの上に乗れないトラブルの解決方法【Unity】

以前UnityでRigidbodyのConfigurable Jointを使って動かせる床のオブジェクトを作っていました。
当時はジャンプのスクリプトにちょっと問題があったので乗るテストをしておらず、最近作り直したのでようやく乗ってみたのですが…うまく乗れない!というトラブルに遭遇したので解決方法をメモしておきます。

動かせる床を作る記事はこちら↓

どんな現象なのか

動画のとおりで、Configurable Jointを使って設置したRigidbodyのオブジェクトに飛び乗るとキャラがめり込んでフワフワしてしまいます。
歩行アニメーションをしていない時はまったく操作をしていないのに、勝手に足が滑ってしまっています。
キャラが床を歩いているところを見ると分かりますが、RigidbodyのオブジェクトでもIsKinematicのものの上にはきちんと乗って歩くことができています。

「レイヤーの指定が間違っていて完全にすり抜けている」とかではなく、一応乗っているのにきちんと乗れない…という感じです。

解決方法

原因解明までめちゃくちゃ苦労してしまいましたが、ようやく分かった原因が「プレイヤーキャラのMassは40になっていて動く床オブジェクトの方のMassが1になっている」ということでした。
動く床の方のMassを50くらいに上げたら無事に乗れるようになりました。

見た目では全然分かりませんでしたが、フワフワの発泡スチロールに乗っているような状態だったみたいです。(でもオブジェクトにめり込むのはおかしいと思うけど…)
このオブジェクトのサイズから考えたらMassは100kg以上あるのが妥当かもしれないですね…。

修正後はこんな感じです。無事に上に立って歩けるようになりました!

まとめ

通常の床置きされたRigidbodyのオブジェクトであれば、乗ろうとした時点でフワフワ転がったり跳ねたりするので逆に原因がすぐに分かるだろうなと思いました。Jointを使って動きを制限したせいで原因が分かりづらくなっていました…。

Jointの意外な落とし穴だなと思いました。自分がアホなだけでもありますが…。

シェアする

「Unity」の記事

もっと読む>>

最新記事

もっと読む>>