Se você estiver usando um corpo rígido com o personagem, poderá tirá-lo da caixa. :)
Portanto, sua hierarquia pode ficar assim:
- Personagem (possui corpo rígido e script de controle)
- criança (talvez tenha colisores)
- neto (talvez tenha colisores)
As mensagens OnCollisionEnter serão acionadas no GameObject que contém o Rigidbody, atingindo o script de controle pai sem a necessidade de escrever um script de retransmissão extra para colar em cada colisor.
Se você precisar descobrir qual colisor de filhos estava envolvido na colisão, faça o seguinte:
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)
}