Trouble with a "Dash" function in 2D game

Hello everyone! I’m sorry if my question seems unclear, but I am having troubles with implementing a dash function in my game. Here is the current script:

[SerializeField] float dashCooldown = 0;
[SerializeField] float dashSpeed = 2;
[SerializeField] bool debugDash = false;
void Update()
{
     dashCooldown -= Time.timeScale;
}
private void Dash()
    {
        if (dashCooldown <= -900 && inputDir != Vector2.zero)
        {
            rb.velocity = new Vector2(rb.velocity.normalized.x, 0);
            rb.AddForce(inputDir.normalized * dashSpeed);
            dashCooldown = 1;
            Debug.Log(debugDash);
            debugDash = true;

        }
    }
    public void ActivateDash(InputAction.CallbackContext context)
    {
        Dash();
        
    }

The “inputDir” variable is a Vector2 that is connected to Unity’s Input Manager, making the player able to move left and right. It is the same for ActivateDash, except it’s bound to left shift.
As it is now, the player more so teleports a short distance fowards rather than get pushed. I was wondering if there was a more elegant way of going about this?