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;
}
}
}