How to control a third person characters facing direction

Here’s the link to the game I’m working on.

https://dl.dropbox.com/u/54318296/deez_world/WebPlayer/WebPlayer.html

Use arrow keys to move the player, space to jump, and a key to punch. I’m having trouble coding the character to face the direction he is moving in.

This is the code used.

private var controller : CharacterController; 





function Start ()



{

	controller = GetComponent(CharacterController); 

	animation.wrapMode = WrapMode.Loop;

 

	animation["jump"].layer = 10;

	animation["jump"].wrapMode = WrapMode.ClampForever;

 

	animation["fall"].layer = 10;

	animation["fall"].wrapMode = WrapMode.ClampForever;

 

	animation["land"].layer = 10;

	animation["land"].wrapMode = WrapMode.Once;

	



	

	animation.Stop();

	animation.Play("idle");

}

 

function Update ()

{

	var MovementY = controller.velocity.y;

	var controller : CharacterController =  GetComponent(CharacterController);

 

	if ((MovementY > 0.1) && !(controller.collisionFlags & CollisionFlags.Below))

	{

	animation.CrossFade("jump");

	}

	else if ((MovementY < -5) && !(controller.collisionFlags & CollisionFlags.Below))

	{

	animation.CrossFade("fall");

	}

 

	if ( ((animation.IsPlaying("jump")) || (animation.IsPlaying("fall"))) && (controller.collisionFlags & CollisionFlags.Below))

	animation.CrossFade("land");

 

    

    else

      animation.CrossFade("idle");

      

    

	if (Input.GetKey("down"))

		animation.Play("backrun");

	

	 if (Input.GetKey("up"))

	 	animation.Play("run");	

		

	

	if (Input.GetKey("a"))

		animation.CrossFade ("punch");

}

I having trouble making my player rotate properly and making the character stay facing towards direction of the last key pressed.

Any suggestions?

My experience with character controllers and animations is very limited, but conceptually this the code might solve your problem. Place it in Update().

var lookPos = controller.velocity;
lookPos.y = transform.position.y;
if (lookPos.sqrMagnitude > 0.0) {
    lookPos += transform.position;
    transform.LookAt(lookPos);
}