【Unity】3Dと2Dの物体の衝突はできない
UnityではColliderを使って物体間の衝突を検知する。
Colliderは3Dと2DそれぞれのColliderが用意されていて、3Dと3Dの衝突、2Dと2Dの衝突検知はできるんだけど、3Dと2DのColliderの衝突は検知できないらしい。
下記のQ&Aを参照。
Can Rigidbody 2D collide with 3D Colliders? - Unity Answers
なぜならば 3DではPhysXを、2DではBox2Dという別々のライブラリを使っているため。
解決策は以下の通り。
1. 3Dオブジェクトの子オブジェクトとして空のオブジェクトを追加。
2. 空のオブジェクトにBoxCollider2Dを追加する。サイズはオブジェクトに合わせること。
3. 空のオブジェクトにRigidBody2Dを追加する。GravityScaleは0にすること。 サイズはオブジェクトに合わせること。
あるいは上記の逆、2Dオブジェクトに3DのColliderを追加でもよい。