Si estás usando un cuerpo rígido con el personaje, puedes sacarlo de la caja. :)
Entonces su jerarquía podría verse así:
- Personaje (tiene Rigidbody y script de control)
- niño (tal vez tiene colisionadores)
- nieto (tal vez tiene colisionadores)
Los mensajes OnCollisionEnter se dispararán en el GameObject que contiene el Rigidbody, llegando a su script de control principal sin necesidad de escribir un script de retransmisión adicional para pegar en cada colisionador.
Si necesita averiguar cuál de los colisionadores de su hijo estuvo involucrado en la colisión, puede hacerlo así:
void OnCollisionEnter(Collision collision) {
Collider myCollider = collision.contacts[0].thisCollider;
// Now do whatever you need with myCollider.
// (If multiple colliders were involved in the collision,
// you can find them all by iterating through the contacts)
}