- Home /
Question by
halfbreed201 · Nov 26, 2011 at 12:57 AM ·
movementcharactercontrollercharacter controllerthird person controller
Problem with Movement Script
I got this code from a YouTube video (or, well, from someone who provided the code) and put it on my Sphere. Here it is:
var speed : float = 3;
var rotateSpeed : float = 3;
function Update() {
var controller : CharacterController = GetComponent( CharacterController );
transform.Rotate( 0, Input.GetAxis( "Horizontal" ) * rotateSpeed, 0 );
var forward = transform.TransformDirection( Vector3.forward );
var curSpeed = speed * Input.GetAxis( "Vertical" );
controller.SimpleMove( forward * curSpeed );
}
@script RequireComponent( CharacterController );
When I run the game, I do not get any errors. However, if I try to move forward and to the side at the same time, the spheres being moved get separated and it all goes haywire. I got the following code from the internet as a 'Smooth Follow' script:
// The target we are following
var target : Transform;
// The distance in the x-z plane to the target
var distance = 10.0;
// the height we want the camera to be above the target
var height = 5.0;
// How much we
var heightDamping = 2.0;
var rotationDamping = 3.0;
// Place the script in the Camera-Control group in the component menu
@script AddComponentMenu("Camera-Control/Smooth Follow")
function LateUpdate () {
// Early out if we don't have a target
if (!target)
return;
// Calculate the current rotation angles
wantedRotationAngle = target.eulerAngles.y;
wantedHeight = target.position.y + height;
currentRotationAngle = transform.eulerAngles.y;
currentHeight = transform.position.y;
// Damp the rotation around the y-axis
currentRotationAngle = Mathf.LerpAngle (currentRotationAngle, wantedRotationAngle, rotationDamping * Time.deltaTime);
// Damp the height
currentHeight = Mathf.Lerp (currentHeight, wantedHeight, heightDamping * Time.deltaTime);
// Convert the angle into a rotation
currentRotation = Quaternion.Euler (0, currentRotationAngle, 0);
// Set the position of the camera on the x-z plane to:
// distance meters behind the target
transform.position = target.position;
transform.position -= currentRotation * Vector3.forward * distance;
// Set the height of the camera
transform.position.y = currentHeight;
// Always look at the target
transform.LookAt (target);
}
Any help?
Comment