I have a code that tilts my camera left or right when you hold q or e. Here’s the script…
#pragma strict
var leanAngle : float = 35.0;
var leanSpeed : float = 5.0;
var leanBackSpeed : float = 6.0;
function Update ()
{
if (Input.GetKey("q")) {
LeanLeft();
}
else if (Input.GetKey("e")) {
LeanRight();
}
else
{
LeanBack();
}
}
function LeanLeft()
{
// current Z-rotation
var currAngle : float = transform.rotation.eulerAngles.z;
//var rot : Quaternion = transform.rotation;
// target Z-rotation
var targetAngle : float = leanAngle;
if ( currAngle > 180.0 )
{
//targetAngle = 0.0 - leanAngle;
currAngle = 360 - currAngle;
}
//lerp value from current to target
var angle : float = Mathf.Lerp( currAngle, targetAngle, leanSpeed * Time.deltaTime );
//Debug.Log ( "Left : currAngle " + currAngle + " : targetAngle " + targetAngle + " : angle " + angle );
// rotate char
var rotAngle : Quaternion = Quaternion.Euler( transform.rotation.eulerAngles.x, transform.rotation.eulerAngles.y, angle );
transform.rotation = rotAngle;
}
function LeanRight()
{
// current Z-rotation
var currAngle : float = transform.rotation.eulerAngles.z;
// target Z-rotation
var targetAngle : float = leanAngle - 360.0;
if ( currAngle > 180.0 )
{
targetAngle = 360.0 - leanAngle;
}
//lerp value from current to target
var angle : float = Mathf.Lerp( currAngle, targetAngle, leanSpeed * Time.deltaTime );
//Debug.Log ( "Right : currAngle " + currAngle + " : targetAngle " + targetAngle + " : angle " + angle );
// rotate char
var rotAngle : Quaternion = Quaternion.Euler( transform.rotation.eulerAngles.x, transform.rotation.eulerAngles.y, angle );
transform.rotation = rotAngle;
}
function LeanBack()
{
// current Z-rotation
var currAngle : float = transform.rotation.eulerAngles.z;
// target Z-rotation
var targetAngle : float = 0.0;
if ( currAngle > 180.0 )
{
targetAngle = 360.0;
}
//lerp value from current to target
var angle : float = Mathf.Lerp( currAngle, targetAngle, leanBackSpeed * Time.deltaTime );
//Debug.Log ( "Center : currAngle " + currAngle + " : targetAngle " + targetAngle + " : angle " + angle );
var rotAngle : Quaternion = Quaternion.Euler( transform.rotation.eulerAngles.x, transform.rotation.eulerAngles.y, angle );
transform.rotation = rotAngle;
}
But for some reason, after leaning left and then leaning right, the camera really just jumps to the right. I could I fix this?