sending a message to child objects

I have a pirate ship with a few plates on it. the plates have individual health’s. When i shoot a cannon i want it to hit a single plate and use send message to let it know its been hit. Problem is, that whenever i shoot at the ship, it goes to the parent object. How do i register a hit on a child object?

you can use FindObjectOfType, example further down, just make sure that both the function trying to call it and the function that is getting called are public, if you need anymore help just @ me with your question. I deleted the tab while writing this answer twice now…


forgot to mention
cannonball script:

void OnCollisionEnter(Collision hit)
    { // col is a reference to the collider hit
        if (hit.gameObject.tag == "ShipPlate")
        { // if the collider belongs to the Player...
            hit.gameObject.SendMessage("ApplyDamage", 5); // send the message to its owner
            Debug.Log("Collision Detected");


    public void ApplyDamage(int damageTotal)
        health -= damageTotal;
        Debug.Log("Damage " + damageTotal + " was applied");