Unity で Rigidbody も Collider もあるのに衝突しない場合は、Rigidbody の Collision Detection の値を見直してみましょう。
どこの値を変更するの?
Rigidbody の Collision Detection の設定が、 Discrete になっていたら、とりあえず Continuous に変更してみましょう。
Collision Detection ってなに?
衝突判定のことですが、公式サイトでは以下の通りに説明されています。
Collision Detection | これを使用すると、高速で動くオブジェクトが、衝突を検知せずに他のオブジェクトをすり抜けてしまうことを防ぎます。
なんで最初から Continous ではないの?
衝突検知するためには、衝突していることを判定しないといけませんが、その回数が多い方が性能問題を引き起こしやすくなります。Discreate と Continous を比較すると、Continous の方が衝突判定が多い分、高速に動いているものでも正確に衝突判定しやすくなります。そしてその分CPUリソースなどを使用することになります。
こちらのサイトがわかりやすく説明してくれています。他の設定値についても説明してくれているので、興味がある方はぜひ。
【Unity】RigidbodyのCollision Detection(衝突の検知)を変えて実験