- Home /
How To Set Camera Angle With A Variable?
Hello All,
I'm an artist trying to learn the ins and outs of programming in Unity, it's slow going but there is so much to learn. I was hoping someone would be able to shed some light on my camera angle problem.
I've added a mouse rotation to the SmoothFollow camera script that allows the camera to follow the target but give left/right control to the mouse, but cannot figure out how to code a var to set the angle of the camera.
Like the normal SmoothFollow - there are variables for height,distance, and damp. Does anyone know how I could set the camera angle rotation? As it stands now, the camera is looking down at my target at an angle as opposed to straight at it or even up at the target. Nothing I've tried is working. Thank you for your time.
//how fast the camera should move along XY
var XYmousespeed : float = 40.0;
// The target we are following
var target : Transform;
// The distance in the x-z plane to the target
var distance = 0;
// the height we want the camera to be above the target
var height = 6.0; var heightDamping = 2.0; var rotationDamping = 3.0; var rot = 3.0;
function Update(){ transform.Rotate(Vector3(Input.GetAxis("Mouse Y"), Input.GetAxis("Mouse X"), 0) Time.deltaTime XYmousespeed);
Screen.lockCursor = true;
if (Input.GetKeyDown ("escape")) Screen.lockCursor = false;
}
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;
// Convert the angle into a rotation
// The quaternion interface uses radians not degrees so we need to convert from degrees to radians
currentRotation = Quaternion.Euler (0, currentRotationAngle, 0);
// Damp the rotation around the y-axis
currentRotationAngle = Mathf.LerpAngle (currentRotationAngle, wantedRotationAngle, rotationDamping * Time.deltaTime);
currentHeight = Mathf.Lerp (currentHeight, wantedHeight, heightDamping * Time.deltaTime);
// 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);
}