isGrounded not working
I have 2 characters running off the following script, they both have gravity scales of 3, both players drop and touch the ground but one bounces back up to his start location, then falls a second later triggering both his AND the other player's jump animation......i've checked all the box and circle colliders and none of them seem to be a bouncy material. Am I missing something?
using System.Collections; using System.Collections.Generic; using UnityEngine;
public class PlayerController : MonoBehaviour {
public float moveSpeed;
public float jumpForce;
public KeyCode left;
public KeyCode right;
public KeyCode jump;
public KeyCode throwNut;
private Rigidbody2D theRB;
public Transform groundCheckPoint;
public float groundCheckRadius;
public LayerMask whatIsGround;
public Transform CeilingCheck;
public bool isGrounded;
private bool isCrouched;
private float crouch;
public bool crouching;
private Animator anim;
public GameObject throwingNut;
public Transform ThrowPoint;
// Start is called before the first frame update
void Start()
{
theRB = GetComponent<Rigidbody2D>();
anim = GetComponent<Animator>();
}
// Update is called once per frame
void Update()
{
isGrounded = Physics2D.OverlapCircle(groundCheckPoint.position, groundCheckRadius, whatIsGround);
isCrouched = Physics2D.OverlapCircle(CeilingCheck.position, groundCheckRadius, whatIsGround);
crouch = Input.GetAxisRaw("CrouchInput");
CrouchFunction();
GetComponent<Animator>().SetBool("Crouch", crouching);
if(Input.GetKey(throwNut))
{
GameObject nutClone = (GameObject)Instantiate(throwingNut, ThrowPoint.position, ThrowPoint.rotation);
nutClone.transform.localScale = transform.localScale;
anim.SetTrigger("Throw");
}
if (Input.GetKey(left))
{
theRB.velocity = new Vector2(-moveSpeed, theRB.velocity.y);
}
else if (Input.GetKey(right))
{
theRB.velocity = new Vector2(moveSpeed, theRB.velocity.y);
}
else
{
theRB.velocity = new Vector2(0, theRB.velocity.y);
}
if (Input.GetKeyDown(jump) && isGrounded)
{
theRB.velocity = new Vector2(theRB.velocity.x, jumpForce);
}
if (theRB.velocity.x < 0)
{
transform.localScale = new Vector3(-1, 1, 1);
}
else if(theRB.velocity.x > 0)
{
transform.localScale = new Vector3(1, 1, 1);
}
anim.SetFloat("Speed", Mathf.Abs(theRB.velocity.x));
anim.SetBool("Grounded", isGrounded);
}
void CrouchFunction()
{
if((crouch!=0 || isCrouched==true) && isGrounded == true)
{
crouching = true;
moveSpeed = 1.5f;
}
else
{
crouching = false;
moveSpeed = 6f;
}
}
}
Collider Controller Script:
using System.Collections; using System.Collections.Generic; using UnityEngine;
public class ColliderControl : MonoBehaviour { public BoxCollider2D stand; public BoxCollider2D crouch; public CircleCollider2D circle;
PlayerController playerC;
// Start is called before the first frame update
void Start()
{
playerC = GetComponent<PlayerController>();
stand.enabled = true;
crouch.enabled = false;
circle.enabled = true;
}
// Update is called once per frame
void Update()
{
if(playerC.isGrounded == false)
{
stand.enabled = true;
crouch.enabled = false;
circle.enabled = true;
}
else
{
if(playerC.crouching == true)
{
stand.enabled = false;
crouch.enabled = true;
circle.enabled = true;
}
else
{
stand.enabled = true;
crouch.enabled = false;
circle.enabled = true;
}
}
}
}
Your answer
Follow this Question
Related Questions
rigidbody2D's velocity not working 1 Answer
Help with code for picking up objects 1 Answer
Unity "ArgumentExeption: The object you want to instantiate is null." need help. 0 Answers
Activate 2 gameobjects separate if there is Enemy tag C# 0 Answers
Evasive Maneuver causing Space shooter enemies to not move? 0 Answers