If you're using a Rigidbody with the character, you can get this out of the box. :)
So your hierarchy could look like this:
- Character (has Rigidbody and control script)
- child (maybe has colliders)
- grandchild (maybe has colliders)
OnCollisionEnter messages will fire on the GameObject containing the Rigidbody, reaching your parent control script without needing to write an extra relay script to stick on each collider.
If you need to find out which of your child colliders was involved in the collision, you can do it like so:
void OnCollisionEnter(Collision collision) {
Collider myCollider = collision.GetContact(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)
}