3D Dash ability

I am trying to make a dash ability for a 3D first person game i am making, but i am stuck. i made a script for the camera control and a script for the movement, in that is the dash i am trying to make. i want the dash to bring the player forward some in whatever direction theyre facing, and such. but at the moment the dash shoots the player up and im not sure why. these are the scripts

Camera Control:

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

public class PlayerLook : MonoBehaviour
{
    [SerializeField]
    private string mouseXInputName, mouseYInputName;

    [SerializeField]
    private float mouseSensitivity;

    [SerializeField]
    private Transform playerBody;

    private float xAxisClamp;

    void Awake()
    {
        LockCursor();
        xAxisClamp = 0.0f;
    }

    private void LockCursor()
    {
        Cursor.lockState = CursorLockMode.Locked;
    }

    private void Update()
    {
        CameraRotation();
    }

    private void CameraRotation()
    {
        float mouseX = Input.GetAxis(mouseXInputName) * mouseSensitivity * Time.deltaTime;
        float mouseY = Input.GetAxis(mouseYInputName) * mouseSensitivity * Time.deltaTime;

        xAxisClamp += mouseY;

        if(xAxisClamp > 90.0f)
        {
            xAxisClamp = 90.0f;
            mouseY = 0.0f;
            ClampXAxisRotationToValue(270.0f);
        }
        else if (xAxisClamp < -90.0f)
        {
            xAxisClamp = -90.0f;
            mouseY = 0.0f;
            ClampXAxisRotationToValue(-270.0f);
        }

        transform.Rotate(Vector3.left * mouseY);
        playerBody.Rotate(Vector3.up * mouseX);

    }

    private void ClampXAxisRotationToValue(float value)
    {
        Vector3 eulerRotation = transform.eulerAngles;
        eulerRotation.x = value;
        transform.eulerAngles = eulerRotation;
    }
}

Player Movement (with the broken dash)

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

public class PlayerMove : MonoBehaviour
{
    [SerializeField]
    private string horizontalInputName;

    [SerializeField]
    private string verticalInputName;

    [SerializeField]
    private float movementSpeed;

    private CharacterController charController;

    private float dashSpeed = 100f;

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

    private void Update()
    {
        PlayerMovement();
    }

    private void PlayerMovement()
    {
        float horizInput = Input.GetAxis(horizontalInputName) * movementSpeed;
        float vertInput = Input.GetAxis(verticalInputName) * movementSpeed;

        Vector3 forwardMovement = transform.forward * vertInput;
        Vector3 rightMovement = transform.right * horizInput;

        charController.SimpleMove(forwardMovement + rightMovement);

        if (Input.GetKeyDown(KeyCode.T))
        {
            charController.Move(transform.position * dashSpeed * Time.deltaTime);
        }
    }
}

any suggestions on how to make a better dash script would be much appreciated, i know the mess i have now isnt very good, Thanks (:

if (Input.GetKeyDown(KeyCode.Q))
{
Walkspeed = 20;
controller.Move(move * Walkspeed * Time.deltaTime);

            Start:

            Walkspeed -= SpeedIncrease;
            Debug.Log(Walkspeed);

            if (Walkspeed > 6)
            {
                goto Start;
            }
        }

Well this is how i did it (inside of update method)