Jump not working in my Player Movement Script

So This was all working perfectly the last time I checked, and I don’t have a clue what I changed, and I don’t think it was anything directly linked to the script. Also I’m brand new to programming, so please explain in simple terms. Thanks so much in advance, here is my code.

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

public class PlayerMovement : MonoBehaviour
{

    public CharacterController controller;


    public float speed = 12f;
    public float gravity = -9.81f;
    public float jumpHeight = 3f; //FIRST PERSON MOVEMENT in Unity - FPS Controller 22:20 https://www.youtube.com/watch?v=_QajrabyTJc

    public Transform groundCheck;
    public float groundDistance = 0.4f;
    public LayerMask groundMask;

    Vector3 velocity;
    bool isGrounded;


    // Update is called once per frame
    void Update()
    {
        isGrounded = Physics.CheckSphere(groundCheck.position, groundDistance, groundMask);

if(isGrounded && velocity.y < 0)
{
    velocity.y = -2f;
}

        float x = Input.GetAxis("Horizontal");
        float z = Input.GetAxis("Vertical");

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

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

if(Input.GetButtonDown("Jump") && isGrounded)
{
    velocity.y = Mathf.Sqrt(jumpHeight * -2f * gravity);
}

        velocity.y += gravity * Time.deltaTime;

        controller.Move(velocity * Time.deltaTime);
    }
}

188583-playermovescripthelpissueforumpostimage.jpg

Solved:

The GameObject that detects the ground “GroundCheck” was too high up in the Player body, and wasn’t detecting the ground. Silly me. If anyone else is having this issue here are a few things to check:
first of all, what my issue was ^^

  1. if you are detecting the ground using a tag, make sure the whole environment has the tag applied:

  2. Check script for missing operators or misswritten code (obviously)

  3. Check if you are using the new or old input system (Main Window (unity) > Edit > Project Settings > Player > Active Input Handling (near the bottom)) and adapt code or settings accordingly

  4. Restart Unity, This works more often than you think!