Can't seem to get dash cooldown working...

This is a simple bit of dash code and after trying to get it working I have been wondering how to get a 6 second or so cool down in between each dash so I can’t spam it. Thank you in advance!

     public const float maxDashTime = 1.0f;
     public float dashDistance = 10;
     public float dashStoppingSpeed = 0.1f;
     float currentDashTime = maxDashTime;
     float dashSpeed = 6;
     CharacterController controller;

    private void Awake()
    {
        controller = GetComponent<CharacterController>();
    }

    void Update()
    {
        {
            if (Input.GetButtonDown("Dash")) 
            {
                currentDashTime = 0;
            }
            if (currentDashTime < maxDashTime)
            {
                moveDirection = transform.forward * dashDistance;
                currentDashTime += dashStoppingSpeed;
            }
            else
            {
                moveDirection = Vector3.zero;
            }
            controller.Move(moveDirection * Time.deltaTime * dashSpeed);
        }
        
        
    }
}

What I can see here is that you are reseting the dash time at every click. Also, you are not really using time, here but a number that could change over time. I can’t really try the code, but here is what I would recommend:

    public const float maxDashTime = 6.0f;
    public float dashDistance = 10;
    public bool dash;
    float currentDashTime;
    float dashSpeed = 6;
    CharacterController controller;

    private void Awake()
    {
        controller = GetComponent<CharacterController>();
    }

    void Update()
    {

        if (Input.GetButtonDown("Dash") && !dash)
        {
            moveDirection = transform.forward * dashDistance;
            controller.Move(moveDirection * Time.deltaTime * dashSpeed);
            currentDashTime = 0;
            dash = true;
        }

    }
    void FixedUpdate()
    {
        if (currentDashTime < maxDashTime && dash)
        {           
            currentDashTime += Time.deltaTime;
        }
        else
        {
            moveDirection = Vector3.zero;
            dash = false;
        }
    }

}

However, since I don’t really know how your controller.Move works, i don’t want to give you something not useful. But, moveDirection doesn’t need to be called every time, and neither i know why you are seeting time.deltatime and dash speed inside the move function. Changing that, it would look like this:

    public const float maxDashTime = 6.0f;
    public float dashDistance = 10;
    public bool dash;
    float currentDashTime;
    CharacterController controller;

    private void Awake()
    {
        controller = GetComponent<CharacterController>();
    }

    void Update()
    {
        if (Input.GetButtonDown("Dash") && !dash)
        {
            controller.Move(transform.forward * dashDistance);
            currentDashTime = 0;
            dash = true;
        }
    }
    void FixedUpdate()
    {
        if (currentDashTime < maxDashTime && dash)
        {           
            currentDashTime += Time.deltaTime;
        }
        else
        { 
            dash = false;
        }
    }

I hope that I can help!