OnCollisionEnter()
が呼ばれない場合は、いくつかの可能性が考えられます。
1.Is TriggerがONになっていて、OnTriggerEnter()
の方が呼ばれている
ColliderのIs TriggerのフラグがONになっている場合は、OnCollisionEnter()
ではなくOnTriggerEnter()
が呼ばれてしまいます。
OnCollisionEnter()
を使う場合はIs TriggerのフラグがOFFにしてみてください。
2.OnCollisionEnter()
の引数の型が誤っている
OnCollisionEnter()
とOnTriggerEnter()
は引数の型が違います。
引数の型が間違えていないか確認してみてください。
void OnCollisionEnter( Collision i_collision )
{
Debug.Log( "Hit Collision!" );
}
void OnTriggerEnter( Collider i_other )
{
Debug.Log( "Trigger Collision!" );
}
3.RigidBodyが当てる側のGameObjectについていない
当たり判定を行うには当てる側のGameObjectにRigidBodyコンポーネントがついている必要があります。
OnCollisionEnter()
とOnTriggerEnter()
は当たり判定が行われれば、呼び出されるため、
当てられる側にRigidBodyコンポーネントがなくても呼び出されます。
4.当てる側、当てられる側の双方のGameObjectにRigidBodyがついており、かつIs KinematicがONになっている。
当てる側、当てられる側のRigidbodyのIs Kinematicが双方ともONになっている場合は、OnCollisionEnter()
は呼び出されません。
以上の内容を確認してみていただけませんか。