- Home /
Camera Lean
I have made a script that is intended to make the camera lean using controls and effects similar to amnesia. Although when I attach the script to a camera it has no errors in the console but pressing q and e have no effect. Please help!! Thanks guys
Code:
using UnityEngine;
using System.Collections;
public class Lean : MonoBehaviour {
public float leanAngle = 35.0f;
public float leanSpeed = 5.0f;
public float leanBackSpeed = 6.0f;
void Update (){
if (Input.GetKey(KeyCode.Q)) {
LeanLeft();
}
else if (Input.GetKey(KeyCode.E)) {
LeanRight();
}
else
{
LeanBack();
}
}
void LeanLeft (){
// current Z-rotation
float currAngle = transform.rotation.eulerAngles.z;
//Quaternion rot = transform.rotation;
// target Z-rotation
float targetAngle = leanAngle;
if ( currAngle > 180.0f )
{
//targetAngle = 0.0f - leanAngle;
currAngle = 360 - currAngle;
}
//lerp value from current to target
float angle = Mathf.Lerp( currAngle, targetAngle, leanSpeed * Time.deltaTime );
//Debug.Log ( "Left : currAngle " + currAngle + " : targetAngle " + targetAngle + " : angle " + angle );
// rotate char
Quaternion rotAngle = Quaternion.Euler( transform.rotation.eulerAngles.x, transform.rotation.eulerAngles.y, angle );
transform.rotation = rotAngle;
}
void LeanRight (){
// current Z-rotation
float currAngle = transform.rotation.eulerAngles.z;
// target Z-rotation
float targetAngle = leanAngle - 360.0f;
if ( currAngle > 180.0f )
{
targetAngle = 360.0f - leanAngle;
}
//lerp value from current to target
float angle = Mathf.Lerp( currAngle, targetAngle, leanSpeed * Time.deltaTime );
//Debug.Log ( "Right : currAngle " + currAngle + " : targetAngle " + targetAngle + " : angle " + angle );
// rotate char
Quaternion rotAngle = Quaternion.Euler( transform.rotation.eulerAngles.x, transform.rotation.eulerAngles.y, angle );
transform.rotation = rotAngle;
}
void LeanBack (){
// current Z-rotation
float currAngle = transform.rotation.eulerAngles.z;
// target Z-rotation
float targetAngle = 0.0f;
if ( currAngle > 180.0f )
{
targetAngle = 360.0f;
}
//lerp value from current to target
float angle = Mathf.Lerp( currAngle, targetAngle, leanBackSpeed * Time.deltaTime );
//Debug.Log ( "Center : currAngle " + currAngle + " : targetAngle " + targetAngle + " : angle " + angle );
Quaternion rotAngle = Quaternion.Euler( transform.rotation.eulerAngles.x, transform.rotation.eulerAngles.y, angle );
transform.rotation = rotAngle;
}
[RPC]
void Test (){}
}
@alucardj Its always odd seeing your own scripts come back to you, complete with your own comments and idiosyncratic member names. I think some people forget how small the internet community of Unity developers really is.
@gripingberry I suggest you learn to write a script first, before copying from the internet. The code is fine, its probably a set up error in the inspector. Some things to check:
Is the script actually attached to the GameObject
Are the values for the public fields in the inspector non zero
Is the component enabled?
Your answer
Follow this Question
Related Questions
Weird FPS Camera 0 Answers
I cannot see button on camera preview 1 Answer
Implement a "FreeLook view" 1 Answer