Side Stepping problem

When the player presses a direction (WASD) twice, I want it so the player basically side steps or a small jump to the side or forward might be a better way to describe it.

    if(Input.GetKeyDown(KeyCode.A)) {
    
    	if(!one_press)
    		{
    			one_press = true;
    			delay = Time.time + .2;
    			timer_for_double_press = Time.time;
    		}
    	else
    	{
    		one_press = false;
    		
    		transform.Translate(Vector3 * 20 * Time.deltaTime);
    	}
    
    }
    if(one_press)
	{
   		if((Time.time - .2) > delay)
			{
	    		one_press = false;
 
			}
	}

this is my double press check script, it works fine but transform.Translate(Vector3 * 20 * Time.deltaTime); sets the player a distance from his current position without a smooth transition.

Is there way to move the player in a direction over the course of say half a second?

Thanks!

if(Input.GetKeyDown(KeyCode.A)) {

    if(!one_press)
        {
            one_press = true;
            delay = Time.time + .2;
            timer_for_double_press = Time.time;
        }
    else
    {
        one_press = false;
        two_press_timer = 0.5;
        two_press = true;
    }

}
if(one_press)
{
       if((Time.time - .2) > delay)
        {
            one_press = false;

        }
}
if (two_press){
    two_press_timer = two_press_timer - Time.deltaTime;
    transform.Translate(Vector3.left * 20 * Time.deltaTime);
    if (two_press_timer < 0){
        two_press = false;
    }
}

I assume you can figure out the needed declarations yourself?

This could all be coded somewhat simpler using coroutines, but I’ll leave that to you to figure out.