I'm having issues with ground detection in my jump code for my 3d game. I'm certain the other parts of the jump script work, but I'm new to coding in C# so of course I might be wrong.

```
[RequireComponent(typeof(Rigidbody))]
public class Movement : MonoBehaviour{
    public CharacterController controller;
    public float speed = 12f;

    //inputs 
    float x, z;
    public bool isGrounded;

    //jump
    public Vector3 jump;
    public float jumpForce = 400;

    Rigidbody rb;
    void Start()
    {
        rb = GetComponent<Rigidbody>();
        jump = new Vector3(0.0f, 2.0f, 0.0f);

    }

    void OnCollisionStay()
    {
        isGrounded = true;
    }

    // Update is called once per frame
    void Update()
    {
        //walking n stuff
        x = Input.GetAxis("Horizontal");
        z = Input.GetAxis("Vertical");

        Vector3 move = transform.right * x + transform.forward * z;

        transform.position += move * Time.deltaTime * speed;

        controller.Move(move * speed * Time.deltaTime);

        //jumping
        if (Input.GetKeyDown(KeyCode.Space) && isGrounded)
            rb.AddForce(jump * jumpForce, ForceMode.Impulse);
        isGrounded = false;

```

It always shows that I'm not grounded in unity, so therefore nothing happens when I press space, I don't get any errors or anything. I think it might be the void OnCollisionStay() part that is the issue, thankyou in advance to anyone who can help.