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?

1 Answer

1

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);
}