# Character rotation problem!

 0 Hi! I'm new to scripting and working hard to learn Javacript. I'm writing a movement script for a 2D-sidescroller. I made this with scripts from tutorials and what I've found in forums. Movement works exactly how i want it to, but i cant get the controller to rotate along its y-axis when turning to walk the other way (You will find my attempt at the end of the script). I would really appreciate it if you could help me out here!:D Sigurd Movement.js ``````var gravity = 20.0; private var moveDirection = Vector3.zero; private var grounded = false; class ControllerMovement { var speed = 6.0; var jumpSpeed = 8.0; var rotationSmoothing = 10.0; @System.NonSerialized var direction = Vector3.zero; // Are we jumping? (Initiated with jump button and not grounded yet) @System.NonSerialized var jumping = false; // This keeps track of our current velocity while we're not grounded? @System.NonSerialized var inAirVelocity = Vector3.zero; } var movement : ControllerMovement; private var controller : CharacterController; function FixedUpdate () { transform.position.z = 0; } function Update() { if (!grounded) { moveDirection.x = Input.GetAxis("Horizontal") * movement.speed; } // If grounded, zero out y component and allow jumping else { moveDirection = Vector3(Input.GetAxis("Horizontal") * movement.speed, 0.0, 0.0); if (Input.GetButton ("Vertical")) { moveDirection.y = movement.jumpSpeed; } } moveDirection = transform.TransformDirection(moveDirection); // Apply gravity moveDirection.y -= gravity * Time.deltaTime; // Move the controller grounded = (GetComponent(CharacterController).Move(moveDirection * Time.deltaTime) & CollisionFlags.CollidedBelow) != 0; // Set rotation to the move direction if (movement.direction.sqrMagnitude > 0.01) transform.rotation = Quaternion.Slerp (transform.rotation, Quaternion.LookRotation (movement.direction), Time.deltaTime * movement.rotationSmoothing); // We are in jump mode but just became grounded if (controller.isGrounded) { movement.inAirVelocity = Vector3.zero; if (movement.jumping) { movement.jumping = false; SendMessage ("DidLand", SendMessageOptions.DontRequireReceiver); var jumpMoveDirection = movement.direction * movement.speed + movement.inAirVelocity; if (jumpMoveDirection.sqrMagnitude > 0.01) movement.direction = jumpMoveDirection.normalized; } } } @script RequireComponent(CharacterController) `````` more ▼ asked May 26 '10 at 05:23 PM Sigurd M 32 ● 1 ● 1 ● 9 add new comment (comments are locked) 10|3000 characters needed characters left ▼ Viewable by all users

 0 Figured it out myself:D Take the PlatformerController.js from the 2D Sidescroller-tutorial Add: private var grounded = false; Right under "// Grounded controls", replace; "if (controller.isGrounded)" with "if (!grounded)". Play with the settings to get the desired movement. This gives sort of ( not exactly the same because of the extra hight-jump) movement as in the script above, but with rotation. Sigurd more ▼ answered May 30 '10 at 05:28 AM Sigurd M 32 ● 1 ● 1 ● 9 add new comment (comments are locked) 10|3000 characters needed characters left ▼ Viewable by all users

By Email:

Topics:

x2159
x1366
x1034

asked: May 26 '10 at 05:23 PM

Seen: 1339 times

Last Updated: May 26 '10 at 05:23 PM