- Home /
Question by
AngryTalon · Mar 10, 2015 at 02:45 PM ·
c#unity 5programming
Unity C# lean script not working properly
Hello all! I recently adapted a JS from a Unity thread into C# for a Amnesia/Outlast style camera lean, and I've run into an error.
While it does work, whenever I load into the game, the player is slanted to the left, and remains there - even after I hit the E key multiple times. My script is as follows
public float leanAngle = 35.0f;
public float leanSpeed = 5.0f;
public float leanBackSpeed = 6.0f;
// Use this for initialization
void Start ()
{
LeanBack();
}
// Update is called once per frame
void Update ()
{
if(Input.GetKeyDown(KeyCode.Q))
{
LeanLeft();
}
else if (Input.GetKeyDown(KeyCode.E))
{
LeanRight();
}
else
{
LeanBack();
}
}
void LeanLeft()
{
float currAngle = transform.rotation.eulerAngles.z;
float targetAngle = leanAngle;
if(currAngle > 180.0f)
{
currAngle = 360.0f - currAngle;
}
float angle = Mathf.Lerp(currAngle, targetAngle, leanSpeed * Time.deltaTime);
Quaternion rotAngle = Quaternion.Euler(transform.rotation.eulerAngles.x, transform.rotation.eulerAngles.y, angle);
transform.rotation = rotAngle;
}
void LeanRight()
{
float currAngle = transform.rotation.eulerAngles.z;
float targetAngle = leanAngle - 360.0f;
if(currAngle > 180.0f)
{
targetAngle = 360.0f - leanAngle;
}
float angle = Mathf.Lerp(currAngle, targetAngle, leanSpeed * Time.deltaTime);
Quaternion rotAngle = Quaternion.Euler(transform.rotation.eulerAngles.x, transform.rotation.eulerAngles.y, angle);
transform.rotation = rotAngle;
}
void LeanBack()
{
float currAngle = transform.rotation.eulerAngles.z;
float targetAngle = leanAngle + 0.0f;
if(currAngle > 180.0f)
{
targetAngle = 360.0f;
}
float angle = Mathf.Lerp(currAngle, targetAngle, leanSpeed * Time.deltaTime);
Quaternion rotAngle = Quaternion.Euler(transform.rotation.eulerAngles.x, transform.rotation.eulerAngles.y, angle);
transform.rotation = rotAngle;
}
}
What am I doing wrong here? Any help is appreciated greatly!
Comment
Answer by hav_ngs_ru · Mar 10, 2015 at 03:24 PM
if(currAngle > 180.0f)
{
targetAngle = 360.0f - leanAngle;
}
Smth wrong here... I guess it should be like this in all LeanXXX functions:
if(targetAngle > 180.0f)
{
targetAngle = 360.0f - targetAngle;
}
Your answer
Follow this Question
Related Questions
Multiple Cars not working 1 Answer
Making Everything Public 0 Answers
Distribute terrain in zones 3 Answers
Build auto id for any object in inspector 1 Answer
Add Special Events for Skills 1 Answer