How can I stop my first person camera from going upside down?
So I don't want my camera to go further on the y-axis. At the moment it can go all around the y-axis. How do I stop it from going further than the ground? This is my current code:
Vector2 mouseLook;
Vector2 smoothV;
public float sensitivity = 5.0f;
public float smoothing = 2.0f;
GameObject character;
void Start () {
character = this.transform.parent.gameObject;
}
void Update () {
var md = new Vector2(Input.GetAxisRaw("Mouse X"), Input.GetAxisRaw("Mouse Y"));
md = Vector2.Scale(md, new Vector2(sensitivity * smoothing, sensitivity * smoothing));
smoothV.x = Mathf.Lerp(smoothV.x, md.x, 1f / smoothing);
smoothV.y = Mathf.Lerp(smoothV.y, md.y, 1f / smoothing);
mouseLook += smoothV;
transform.localRotation = Quaternion.AngleAxis(-mouseLook.y, Vector3.right);
character.transform.localRotation = Quaternion.AngleAxis(mouseLook.x, character.transform.up);
}
It seems like this question is essentially what your wanting to do?
Youd need to also utilize Clamp, most likely with your smoothV y (if you just want to limit the y axis).
Okay, so I read that article but it was a bit too much text so I did not fully understand it. How would I implement it into my code?
I would replace your lerps with the clamp code, which should be smooth enough, unless you want a rotation over time effect, which then, you can add your lerp back to your quaternion, in your last line when you apply the new rotation.
A shorter post may be this one, that might help a bit more too. Josh's reply kind of summarizes how you can use clamp
Alternatively, you can rig up your own "clamp", but it may look weird or stop weird... Using a if-statement, for your positive y, and negative y, something like if(smoothV.y < 180 && smoothV.y > -180){character.transform.localRotation = Quaternion.AngleAxis(mouseLook.x, character.transform.up);}
But there may be some debugging needed there.
Your answer
Follow this Question
Related Questions
How do i limit the rotation of a game object in relation to a free following camera ? 0 Answers
No overload for method 'RotateAround' takes one argument 1 Answer
Making the player the camera's axis of rotation. 0 Answers
Problems with rotation after zoom (camera like Sketchfab) 0 Answers
Recognize when ever camera looks up and turns back down 0 Answers