Lerping character from current position to undefined new positions

So I have a player object that moves one unit in 4 directions and rotates 45 degrees left and right (simulating 8 directional movement), all once upon key presses. What I would like to do is smooth out the movement from the player’s current position before input, to the new position after input.

I’ve seen tutorials showing how to interpolate objects between two points, but in my case, the ending positions will vary depending on where the player is in the world, and will always start from the position the player is when the input was executed. New vectors are accounted for each position.

Below is my code without the interpolation mistakes I’ve been making:

var move : float = 1.0;
var turnSpeed : float = 45.0;

function Update() {
//to move a character forward using the “forward” function (“forward” set as w and up arrow keys).
if (Input.GetButtonDown(“Forward”))
{
//move character assigned units in foward direction.
transform.Translate (Vector3(0,0,move));
}

if (Input.GetButtonDown("Back"))
{
transform.Translate (Vector3(0,0,-move));

//turn a character 45 degrees mulitiplied by 4 (moves forward slightly so as to be 1 unit behind last position).
transform.Rotate (Vector3(0,turnSpeed,0) * 4);
}

if (Input.GetButtonDown("Left"))
{
transform.Translate (Vector3(-move,0,0));

transform.Rotate (Vector3(0, -turnSpeed,0));
}

if (Input.GetButtonDown("Right"))
{
transform.Translate (Vector3(move,0,0));

transform.Rotate (Vector3(0,turnSpeed,0));
}

}

the code was posted a little awkwardly…

You could attach this script to another (empty) GameObject, and then in another new script (attached to the player) write a Lerp function to the position and rotation of the (empty) GameObject, maybe that works. In case you don’t know, the “positional” lerp is Vector3.Lerp, the “rotational” lerp is Quaternion.Lerp. Basically you use the empty GameObject as a “target” for the player to follow.