problem with Charactercontroller

I wrote this script for the Charactercontroller of a simple cube but when I start the game, in addition to rotating it does absolutely nothing and I don’t know why. you may find if there is any problem thanks.

using System.Collections;
//using System.Collections.Generic;
//using System.Security.Cryptography;
using UnityEngine;

public class Charactercontroller : MonoBehaviour
{

    [System.Serializable]
    public class MoveSettings
    {
      
        public float rotateVel = 100;
        public float forwardVel = 12;
        public float jumpVel = 25;
        public float distToGrounded = 0.1f;
        public LayerMask ground;
    }
    [System.Serializable]
    public class PhysSettings
    {
        public float downAccel = 0.75f;
    }
    [System.Serializable]
    public class InputSettings
    {
        public float inputDelay = 0.1f;
        public string FORWARD_AXIS = "Vertical";
        public string TURN_AXIS = "Horizontal";
        public string JUMP_AXIS = "Jump";
    }

    public MoveSettings moveSetting = new MoveSettings();
    public PhysSettings physSetting = new PhysSettings();
    public InputSettings inputSetting = new InputSettings();

    Vector3 velocity = Vector3.zero;
    Quaternion targetRotation;
    Rigidbody rBody;
    float forwardInput, turnInput, jumpInput;
    public Quaternion TargetRotation
    {
        get { return targetRotation; }
    }

    bool Grounded()
    {
        return Physics.Raycast(transform.position, Vector3.down, moveSetting.distToGrounded, moveSetting.ground);
    }
    void Start()
    {
        targetRotation = transform.rotation;
        if (GetComponent<Rigidbody>())
            rBody = GetComponent<Rigidbody>();
        else
        { Debug.LogError("the character needs rigidbody"); }
        forwardInput = 0;
        turnInput = 0;
        jumpInput = 0;
    }

    void GetInput()
    {
        forwardInput = Input.GetAxis(inputSetting.FORWARD_AXIS);
        turnInput = Input.GetAxis(inputSetting.TURN_AXIS);
        jumpInput = Input.GetAxisRaw(inputSetting.JUMP_AXIS);
    }

    void Update()
    {
        GetInput();
        Turn();
    }

    void FixedUpdate()
    {
        Run();
        Jump();

        //rBody.velocity = transform.TransformDirection(velocity);
        rBody.velocity = velocity;
      
    }

     void Run()
    {
        if(Mathf.Abs(forwardInput)> inputSetting.inputDelay)
        {
            //move rBody.velocity = transform.forward * forwardInput * moveSetting.forwardVel;

            velocity.z = moveSetting.forwardVel * forwardInput;
        }
        else
        {
            //  rBody.velocity = Vector3.zero;
            velocity.z = 0;
        }
    }

    void Turn()
    {
        if (Mathf.Abs(turnInput) > inputSetting.inputDelay)
        {
            targetRotation *= Quaternion.AngleAxis(moveSetting.rotateVel * turnInput * Time.deltaTime, Vector3.up);
        }
        transform.rotation = targetRotation;
    }
    void Jump()
    {
        if(jumpInput > 0 && Grounded())
        {
            //jump
            velocity.y = moveSetting.jumpVel;
        }
        else if(jumpInput == 0 && Grounded())
        {
            //zero out our velocity.y
            velocity.y = 0;
        }
        else
        {
            //cedreas velocity.y
            velocity.y -= physSetting.downAccel;
        }
             
    }
}

What is your MoveSettings.forwardVel set to in the inspector?

if I set it to 200 and I don’t click anything else before (wasd) it moves a little then it stops

if I write the code so the cube moves in all directions normally but, of course, it doesn’t jump

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

public class prova : MonoBehaviour
{

    [System.Serializable]
    public class MoveSettings
    {

        public float rotateVel = 100;
        public float forwardVel = 12;
        //public float jumpVel = 25;
        //public float distToGrounded = 0.1f;
        //public LayerMask ground;
    }
    [System.Serializable]
    public class PhysSettings
    {
        //public float downAccel = 0.75f;
    }
    [System.Serializable]
    public class InputSettings
    {
        public float inputDelay = 0.1f;
        //public string FORWARD_AXIS = "Vertical";
        //public string TURN_AXIS = "Horizontal";
        //public string JUMP_AXIS = "Jump";
    }

    public MoveSettings moveSetting = new MoveSettings();
    public PhysSettings physSetting = new PhysSettings();
    public InputSettings inputSetting = new InputSettings();

    //Vector3 velocity = Vector3.zero;
    Quaternion targetRotation;
    Rigidbody rBody;
    float forwardInput, turnInput /*,jumpInput*/;
    public Quaternion TargetRotation
    {
        get { return targetRotation; }
    }

    /*bool Grounded()
    {
        return Physics.Raycast(transform.position, Vector3.down, moveSetting.distToGrounded, moveSetting.ground);
    }*/
    void Start()
    {
        targetRotation = transform.rotation;
        if (GetComponent<Rigidbody>())
            rBody = GetComponent<Rigidbody>();
        else
        { Debug.LogError("the character needs rigidbody"); }
        forwardInput = 0;
        turnInput = 0;
        //jumpInput = 0;
    }

    void GetInput()
    {
        forwardInput = Input.GetAxis(/*inputSetting.FORWARD_AXIS*/"Vertical");
        turnInput = Input.GetAxis(/*inputSetting.TURN_AXIS*/ "Horizontal");
        //jumpInput = Input.GetAxisRaw(inputSetting.JUMP_AXIS);
    }

    void Update()
    {
        GetInput();
        Turn();
    }

    void FixedUpdate()
    {
        Run();
        //Jump();

        //rBody.velocity = transform.TransformDirection(velocity);
        //rBody.velocity = velocity;

    }

    void Run()
    {
        if (Mathf.Abs(forwardInput) > inputSetting.inputDelay)
        {
            //move rBody.velocity = transform.forward * forwardInput * moveSetting.forwardVel;

            //velocity.z = moveSetting.forwardVel * forwardInput;
            rBody.velocity = transform.forward * forwardInput * moveSetting.forwardVel;
        }
        else
        {
            //  rBody.velocity = Vector3.zero;
            //velocity.z = 0;
            rBody.velocity = Vector3.zero;
        }
    }

    void Turn()
    {
        if (Mathf.Abs(turnInput) > inputSetting.inputDelay)
        {
            targetRotation *= Quaternion.AngleAxis(moveSetting.rotateVel * turnInput * Time.deltaTime, Vector3.up);
        }
        transform.rotation = targetRotation;
    }
    /*void Jump()
    {
        if (jumpInput > 0 && Grounded())
       {
            //jump
            velocity.y = moveSetting.jumpVel;
        }
        else if (jumpInput == 0 && Grounded())
        {
            //zero out our velocity.y
            velocity.y = 0;
        }
        else
        {
            //cedreas velocity.y
            velocity.y -= physSetting.downAccel;
        }

    }*/
}