Please use code tags: Using code tags properly
How to report your problem productively in the Unity3D forums:
Also, review the requirements (in the Unity docs) for receiving collision callbacks such as OnCollisionEnter2D().
To help gain more insight into your problem, I recommend liberally sprinkling Debug.Log() statements through your code to display information in realtime.
Doing this should help you answer these types of questions:
- is this code even running? which parts are running? how often does it run?
- what are the values of the variables involved? Are they initialized?
Knowing this information will help you reason about the behavior you are seeing.