Unityでゲームを作る時に、
RigidbodyやColliderは付いてるのに
衝突してほしいオブジェクトがなぜかすり抜けてしまうことってありませんか?
今回はそんな時の対処方法について紹介していきます!
Unityでコライダーがすり抜ける原因
RigidbodyやColliderは付いてるのに
オブジェクトが他のオブジェクトに当たらずに、
すり抜けてしまう原因は
オブジェクトの移動速度が速い可能性が高いです。
Unityでコライダーがすり抜ける対処方法
ではどのように対処すればいいのか、
2つほど解説していきます。
1:オブジェクトの移動速度を落とす
最も簡単な対処方法の一つです。
ただしゲームの表現や、
やりたいことが再現できなくなるため、
この手段はとれることが少ないと思います。
2:RigidbodyのCollision Detectionの設定を変更する
次の対処方法としてRigidbodyのCollision Detectionの設定を変える方法があります。
設定を変えるだけですり抜ける現象を防ぐことができますが、一つ注意が必要です。
下記の順番で処理が重くなっていきます。
Discrete:一番処理が軽い。オブジェクトの移動速度が遅い場合に用いる。
Continuous:ぶつかる相手がRigidbodyコンポーネントを持っていない。尚且つ動かないオブジェクトの時に用いる
Continuous Speculative:お互いが動くオブジェクトで、移動速度が速いときに用いる。※誤検知がある
Continuous Dynamic:お互いが動くオブジェクトで、移動速度が速いときに用いる。
なので自分が作るゲームに合わせて
設定を変更して行ってください。
YouTubeチャンネル
ゲーム雑学や、具体的なゲーム開発方法まで紹介しているチャンネルを運営しています!
参照記事
Collision Detectionについて
もっと詳しく知りたい方は下記記事をご覧ください。