すり抜ける原因
RigidbodyやColliderを、設定してるのに、オブジェクトがすり抜けてしまう時は、
オブジェクトの移動速度が速すぎることが原因の場合が多いです。
RigidBodyのCollisionDetectionを変更する
RigidbodyのCollisionDetectionがデフォルトでは、Discreteとなっています。
基本的には、デフォルトのDiscreteで大丈夫ですが、移動速度の速いオブジェクトを扱う時には、
以下の3つの設定が有効です。
オブジェクトの状況に応じて、以下の3つの設定から適したものを選びます。
Continuous
Continuousは、
・衝突する対象にRigidbodyがない設定されていないとき(Colliderのみ設定されている)
・衝突する対象が動いていないとき
以上の条件の時にContinuousを使用します。
ContinuousDynamic
ContinuousDynamicは、
・どちらも動くオブジェクトのとき
・移動速度がめちゃくちゃ速い時
以上の条件の時にContinuousDynamicを使用します。
ContinuousSpeculative
ContinuousSpeculativeは、
・どちらも動くオブジェクトのとき
・移動速度がめちゃくちゃ速い時
・ContinuousDynamicだとゲームが重たくなってしまう時
※当たり判定が反応しない場合がある
以上の条件の時にContinuousDynamicを使用します。
Rigidbody2Dの場合
Rigidbody2Dの場合は、設定がContinuousのみしかありませんが、
十分すり抜けなくなるので、問題ありません!