- Home /
Clamping X rotation on camera.
Hey, I've been making a 3rd Person Controller for my game, and I can get the rotation of the camera working, however it currently can rotate infinitely on the X axis, I only want it to be able to rotate a certain amount.
I've tried other solutions online and nothing has worked. Here is my current code (I got this from someone else)
Btw it's in the update function.
void Update()
{
rb.MovePosition(transform.position += transform.forward * speed * Input.GetAxis("Vertical") * Time.fixedDeltaTime);
rb.MovePosition(transform.position += transform.right * speed * Input.GetAxis("Horizontal") * Time.fixedDeltaTime);
if(Input.GetButtonDown("Jump"))
{
if(canJump)
{
rb.velocity = transform.up * speed;
}
}
//CAMERA ROTATION
if(Input.GetKey(KeyCode.Mouse1))
{
float rotY = Input.GetAxis("Mouse Y") * sensitivity;
//Rotating the Player around Y axis
transform.RotateAround(transform.position, transform.up, Input.GetAxis("Mouse X") * sensitivity * 20 * Time.deltaTime);
//Rotating the Camera around X axis
rotY = Mathf.Clamp(rotY, -15, 15);
_camera.transform.localEulerAngles = new Vector3(-rotY, 0f, 0f);
}
}
If anyone could help me it would be great, thanks.
**Not really an answer**, but you should consider maintaining and controlling all positional and rotational values for the camera. For example, storing a Quaternion variable for the rotation, manipulating it how you would like, and then directly setting the Camera's actual rotation value using the data however you would like. This will give you more control over how the application feels.
$$anonymous$$anipulating the rotation Quaternions directly ins$$anonymous$$d of converting back and forth between eulerangles can be very helpful here.
Answer by SunnyChow · Jan 24, 2018 at 10:39 AM
transform.localEulerAngles is calculated from .transform.localRotation so it sometimes go negative or completely mess up 3 axis. you should create a Vector3 in your class and use it for the rotation
Your answer
Follow this Question
Related Questions
transform.rotate 4 Answers
Adding quaternions using a seperate axis 0 Answers
transform.Rotate slows down my moving cube 0 Answers
Issues with copying Y axisrotation of another object 2 Answers