My Rigidbody2D won't activate on collision

Whenever i play the game, this script doesn’t work, there are no issues in the console but it doesn’t work. Here’s the script.

public GameObject Square1;
public GameObject Square2;
public GameObject Square3;
public GameObject Square4;
public GameObject Square5;
public GameObject Square6;

public void OnCollisionEnter2D(Collision2D collision)
{
    if (collision.gameObject.name == "Kite")
    {
        Square1.GetComponent<Rigidbody2D> ().gravityScale = 0.7f;
        Square2.GetComponent<Rigidbody2D> ().gravityScale = 0.7f;
        Square3.GetComponent<Rigidbody2D> ().gravityScale = 0.7f;
        Square4.GetComponent<Rigidbody2D> ().gravityScale = 0.7f;
        Square5.GetComponent<Rigidbody2D> ().gravityScale = 0.7f;
        Square6.GetComponent<Rigidbody2D> ().gravityScale = 0.7f;

        Square1.GetComponent<Rigidbody2D>().isKinematic = false;
        Square2.GetComponent<Rigidbody2D>().isKinematic = false;
        Square3.GetComponent<Rigidbody2D>().isKinematic = false;
        Square4.GetComponent<Rigidbody2D>().isKinematic = false;
        Square5.GetComponent<Rigidbody2D>().isKinematic = false;
        Square6.GetComponent<Rigidbody2D>().isKinematic = false;
    }
}

}

I’ve attached all the game objects ( Square1 etc) outside the script and the game object that this script is on has a box collider 2D so that when my player collides with the game object that has this script, the script is activated. However this doesn’t work, can anyone please help?

I tried to rebuilt your scenario. I will refer to this script attached gameobject as target and the one coming to hit as source. The problem seems that, as your source is already kinematic, it does not trigger collisions. I was able to resolve it by two ways. 1) Making the source rigidbody as dynamic so that it will trigger oncollision enter. 2) By adding a dynamic rigidbody to the target.
Also please check this link for a better understanding of colliders.