Quick jumping code question. Cant jump! (noob),Quick jumping code help. (Noob)

I’m new here so sorry if this ends up on the wrong form but I’ve been working on this code to make the character move in a 3d space and I cant seem to jump. I’m brand new to coding so it maybe an oversight.

Code here:

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;

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);

}

I think you should have a RigidBody component and just modify the velocity, then the physics will work by itself:

Vector3 velocity = rb.velocity;
velocity.x = x * speed;
velocity.z = z * speed;
if(Input.GetButtonDown(“Jump”) && isGrounded) velocity.y = jumpHeight * -2f;

Not sure why you would want to include gravity in the jump velocity.

Don’t know why your current code does not work.