Jump Script Not Working

Hi,
I’m new to unity and am currently having trouble getting my character to jump. I have a jump script in my player controller but when I click space to jump nothing happens. I have the jump action mapped to space in my Input Actions. Here is the code:

public class ThirdPersonScript : MonoBehaviour
{
    public CharacterController controller;
    public Transform cam;

    public float speed = 6;
    public float gravity = -9.81f;
    public float jumpHeight = 3;
    Vector3 velocity;
    bool isGrounded;

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

    float turnSmoothVelocity;
    public float turnSmoothTime = 0.1f;

    //Reference to InputActions script
    private PlayerActionControls playerActionControls;

    //Reference to animator component
    private Animator animator;

    //Called once at start
    private void Awake()
    {
        playerActionControls = new PlayerActionControls();
        animator = GetComponent<Animator>();
    }

    private void OnEnable()
    {
        playerActionControls.Enable();
    }

    private void OnDisable()
    {
        playerActionControls.Disable();
    }

    // Update is called once per frame
    void Update()
    {
        Move();
        Jump();
    }

    private void Jump()
    {
        isGrounded = Physics.CheckSphere(groundCheck.position, groundDistance, groundMask);

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

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

    private void Move()
    {
        //gravity
        velocity.y += gravity * Time.deltaTime;
        controller.Move(velocity * Time.deltaTime);

        //walk
        float horizontal = Input.GetAxisRaw("Horizontal");
        float vertical = Input.GetAxisRaw("Vertical");

        //Read the movement value
        Vector2 movementInput = playerActionControls.Player.Move.ReadValue<Vector2>();
        //Move the player
        Vector3 direction = new Vector3(horizontal, 0f, vertical).normalized;

        if (direction.magnitude >= 0.1f)
        {
            float targetAngle = Mathf.Atan2(direction.x, direction.z) * Mathf.Rad2Deg + cam.eulerAngles.y;
            float angle = Mathf.SmoothDampAngle(transform.eulerAngles.y, targetAngle, ref turnSmoothVelocity, turnSmoothTime);
            transform.rotation = Quaternion.Euler(0f, angle, 0f);
            Vector3 moveDir = Quaternion.Euler(0f, targetAngle, 0f) * Vector3.forward;
            controller.Move(moveDir.normalized * speed * Time.deltaTime);
        }

        //Setting "Run" bool in animator
        if (Mathf.Approximately(movementInput.sqrMagnitude, 0) == false) animator.SetBool("Run", true);
        else animator.SetBool("Run", false);
    }
}

Thanks.

There is a pretty simple fix to this problem. You made it so that your vertical velocity when jumping is right before the vertical velocity is decreased by your gravity. Set your gravity to your jump height, and then the gravity will move you up before moving you back down.