My character controller isGrounded toggles its value even if the movement vector magnitude is zero. And when I walk it keeps toggling its value. So, if I want to jump, sometimes it doesn’t respond because it says it’s not grounded. But when you’re playing it looks completely grounded. What do you think is happening?
public float walkSpeed;
public float rotationSpeed;
public float gravityAcceleration;
public float verticalSpeed;
public float jumpVerticalSpeed;
private CharacterController controller;
public bool grounded;
void Start () {
controller = GetComponent(typeof(CharacterController)) as CharacterController;
}
void Update () {
Vector3 movement = Vector3.zero;
movement += transform.forward * Input.GetAxis("Vertical") * walkSpeed * Time.deltaTime;
grounded = controller.isGrounded;
if(!controller.isGrounded){
verticalSpeed += gravityAcceleration * Time.deltaTime;
movement += transform.up * verticalSpeed * Time.deltaTime;
}else{
if(Input.GetKeyDown(KeyCode.LeftControl)){
Debug.Log("jump");
verticalSpeed = jumpVerticalSpeed;
}else
verticalSpeed = 0;
}
transform.Rotate(0,Input.GetAxis("Horizontal") * rotationSpeed * Time.deltaTime,0);
controller.Move(movement);
}
I have a public bool variable in order to see controller.isGrounded value in the inspector.