Giving my character momentum

I am making a ski game and I want to have my skier to have momentum to make it realistic when he goes down the hill so he keeps going after I let go of the keyboard.

var speed : float = 3.0;
var rotateSpeed : float = 3.0;

private var moveDirection : Vector3 = Vector3.zero;

function Update () {

var controller : CharacterController = GetComponent(CharacterController);

// Rotate around y - axis
transform.Rotate(0, Input.GetAxis ("Horizontal") * rotateSpeed, 0);

// Move forward / backward
var forward : Vector3 = transform.TransformDirection(Vector3.forward);
var curSpeed : float = speed * Input.GetAxis ("Vertical");
controller.SimpleMove(forward * curSpeed);



if (Input.GetAxis("Vertical") > 0.2)
animation.CrossFade ("WalkForward");
else
animation.CrossFade ("Idle2");

}

I don’t know if you are a programmer or not, but basically you will need to get input for key up and key down rather than vertical.

var maxSpeed = 50;//whatever max speed is;
var reducingSpeed = false;// put this at the top of the program
var curSpeed;

function Update(){
//insert rotate code from above
//then something like this for forward

if(Input.GetKeyDown (“UpArrow”)){
curSpeed = maxSpeed;
reducingSpeed = false;
}
if (Input.GetKeyUp (“UpArrow”)){
reducingSpeed = true;
}
if(reducingSpeed){
curSpeed *= .99 //you will need to adust this number for glide, must be below 1
if( curSpeed < 1){curSpeed = 0; reducingSpeed = false;}
}
controller.SimpleMove(forward * curSpeed * Time.deltaTime);
}

Also, think of adding physics because it would be better for slope, etc.