OnCollisionEnter Problem

Why doesnt the onGround variable turn to true when the player collides with the object that i have tagged as Ground ?

using UnityEngine;
using System.Collections;

public class Player : MonoBehaviour {

public float maxSpeed = 3;
public float speed = 10f;
public float jumpPower = 100f;

public bool onGround;
public bool gotin;

private Rigidbody2D rb2d;
private Animator anim;

void Start() 
{
	rb2d = gameObject.GetComponent<Rigidbody2D>();
	anim = gameObject.GetComponent<Animator>();
}


void Update() 
{
	//Animator variables
	anim.SetBool ("Grounded", onGround);
	anim.SetFloat("speed",Mathf.Abs(rb2d.velocity.x));

	//Turnimg back the player
	if(Input.GetAxis("Horizontal") < -0.1f){

		transform.localScale = new Vector3(-1,1,1);
	}
	if(Input.GetAxis("Horizontal") > 0.1f){
		
		transform.localScale = new Vector3(1,1,1);
	}
	
}

void FixedUpdate()
{

	//Moving the player
	float h = Input.GetAxis ("Horizontal");
	
	rb2d.AddForce (Vector2.right * speed * h);
	
	//Limiting Speed of the player
	if(rb2d.velocity.x > maxSpeed)
	{
		rb2d.velocity = new Vector2(maxSpeed,rb2d.velocity.y);
	}
	
	if(rb2d.velocity.x < -maxSpeed)
	{
		rb2d.AddForce (Vector2.left * speed * h);
		rb2d.velocity = new Vector2(-maxSpeed,rb2d.velocity.y);
	}
	
}

//Check if grounded
void OnCollisionEnter(Collision col)
{
	if (col.gameObject.tag == "Ground") {
		gotin = true;
		onGround = true;
	}
}

void OnCollisionExit(Collision col)
{
	if(col.gameObject.tag == "Ground")
	{
		onGround = false;
	}
}

}

It seems you are doing a 2D game. If you are working with 2d rigidbody and 2d colliders, you should use 2d version of CollisionEnter: “OnCollisionEnter2D(Collision2D col)”

Here: Unity - Scripting API: MonoBehaviour.OnCollisionEnter2D(Collision2D)