My Player Can't Run

My player can walk and jump. But it just can’t run. I am new sorry :slight_smile:

public class PlayerMovement : MonoBehaviour
{
    public CharacterController controller;

    public float speed = 12f;
    public float gravity = -9.81f;
    public float jumpHeight = 3f;
    public Camera fpsCamera;

    public Transform groundCheck;
    public float groundDistance = 0.4f;
    public LayerMask groundMask;
         
    Vector3 velocity;
    bool isGrounded;


    void Update()
    {
        isGrounded = Physics.CheckSphere(groundCheck.position, groundDistance, groundMask);
        
        Sprinting();
        
        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);
        
        
    }
    public void Sprinting()
    {
        if(Input.GetKeyDown("left shift"))
        {
            speed = 24f;
            fpsCamera.fieldOfView = 90;
        }
        else
        {
            speed = 12f;
            fpsCamera.fieldOfView = 60;
        }
    }
}

This is the player movement script.

I found the solution .If anyone has the same issue this script will help you. (It also changes the FOV while running)

public class PlayerMovement : MonoBehaviour
{
    public CharacterController controller;

    public float gravity = -19.5f;
    public float jumpHeight = 3f;
    public Camera fpsCamera;

    public float walkSpeed, runSpeed;
    public float runBuildUpSpeed;
    public KeyCode runKey;


    public Transform groundCheck;
    public float groundDistance = 0.4f;
    public LayerMask groundMask;
         
    Vector3 velocity;
    bool isGrounded;


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

        SetMovementSpeed();

        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 * walkSpeed * Time.deltaTime);

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


        velocity.y += gravity * Time.deltaTime;

        controller.Move(velocity* Time.deltaTime);
        
        
    }
    public void SetMovementSpeed()
    {
        if(Input.GetKey(runKey))
        {
            walkSpeed = Mathf.Lerp(walkSpeed, runSpeed, Time.deltaTime * runBuildUpSpeed);
            fpsCamera.fieldOfView = Mathf.Lerp(Camera.main.fieldOfView, 90, 2 * Time.deltaTime);
        }
        else
        {
            walkSpeed = Mathf.Lerp(walkSpeed, walkSpeed, Time.deltaTime * runBuildUpSpeed);
            fpsCamera.fieldOfView = Mathf.Lerp(Camera.main.fieldOfView, 60, 2 * Time.deltaTime);
        }
    }
}