So, I was just trying to add jump function to my game, but somehow it jumps twice everytime, I checked and the 'isGrounded' stays as true even when the player is in air.. Here's the code

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayerController : MonoBehaviour

    // Floats and variables
    private float speed = 5f;
    private float xMov;
    private float zMov;

    public Vector3 Jump;
    public float JumpForce = 2f;
    public bool isGrounded;
    Rigidbody rb;

    // Start is called atr the start of the game
     void Start()
        rb = GetComponent<Rigidbody>();
        Jump = new Vector3(0f, 2f, 0f);

    void OnCollisionStay()
        isGrounded = true;

    // Update is called once per frame
    void Update()
        xMov = Input.GetAxis("Horizontal");
        zMov = Input.GetAxis("Vertical");

        Vector3 movementValue = new Vector3(xMov, 0.0f, zMov);
        transform.position += (movementValue * speed * Time.deltaTime);

        if (Input.GetKeyDown(KeyCode.Space) && isGrounded)
            isGrounded = false;
            rb.AddForce(Jump * JumpForce, ForceMode.Impulse);
            isGrounded = false;

Hi @BKN_Nahar,

so there could be issue with void OnCollisionStay() try change settings in you RigidBody component atached to Jumping GameObject, switch from discret for:

Continuous collision detection (CCD)

Maybe will be enough…