- Home /
SideScroller Rotate
I've edited this WoW Camera Script to fit my character properly, but could someone just quickly tell me how to rotate the character depending on which way he runs? Eg. If he runs left he turns left.
// Movement Variables private var jumpSpeed:float = 9.0; private var gravity:float = 100.0; private var rotateSpeed:float = 250.0; private var grounded:boolean = false; private var moveDirection:Vector3 = Vector3.zero; private var isWalking:boolean = true; private var moveStatus:String = "idle"; private var xSpeed = 250.0; private var ySpeed = 120.0; private var yMinLimit = -40; private var yMaxLimit = 80; private var x = 0.0; private var y = 0.0;
static var walkSpeed:float = 15.0; static var isRunning:boolean = false; static var isMoving:boolean = false;
function Start () { // Set all animations to loop animation.wrapMode = WrapMode.Loop; animation.Stop(); }
// ------------------------------------------------------------------------------------------------------------- // ----------------------------------------------------------- UPDATE --------------------------------------- // -------------------------------------------------------------------------------------------------------------
function Update () { if(grounded) { moveDirection = new Vector3(0,0,Input.GetAxis("Horizontal")); if(Input.GetAxis("Horizontal")) { moveDirection = .7; } moveDirection = transform.TransformDirection(moveDirection); moveDirection = walkSpeed; moveStatus = "idle"; if(moveDirection != Vector3.zero) { animation.CrossFade("run",0.2); isMoving = true; } else { isMoving = false; animation.CrossFade("Take 001",0.2); } }
//////////
if(Input.GetKey("q")) {
isRunning = true;
walkSpeed = 50;
}else{
isRunning = false;
walkSpeed = 30;
}
//////////
moveDirection.y -= gravity * Time.deltaTime;
var controller:CharacterController = GetComponent(CharacterController);
var flags = controller.Move(moveDirection * Time.deltaTime);
grounded = (flags & CollisionFlags.Below) != 0;
};
static function ClampAngle (angle : float, min : float, max : float) {
if (angle < -360) angle += 360; if (angle > 360) angle -= 360; return Mathf.Clamp (angle, min, max); }
@script RequireComponent(CharacterController)
Answer by Statement · Apr 01, 2011 at 08:09 PM
transform.LookAt(transform.position + moveDirection);
or
transform.LookAt(transform.position + transform.forward);
When I added this underneath the moveDirection *= .7; I got him turning but now when I run backwards he runs forwards.