Problem rotating camera on negative z axis
I am trying to rotate the camera between -30 & 30 by pressing the arrow keys. it works fine in the positive direction but as soon as i change direction and it gets to zero in flicks back to 30.
If i change the values to 0, 30 it doesn't flick back to 30 when it hits zero it works fine. The trouble is trying to get to the negative side.
Can anyone see where I am going wrong here please?
void Update() {
Vector3 rotation = transform.eulerAngles;
rotation.z += Input.GetAxis("Horizontal") * rotationSpeed * Time.deltaTime;
transform.eulerAngles = new Vector3(rotation.x, rotation.y,
Mathf.Clamp(rotation.z, -30, 30));
}
Answer by dan_wipf · Mar 29, 2019 at 06:06 AM
Don't use transform.eulerAngles to set a Value, just use it to Read. Use transform.rotation = Quaternion.Euler => it's the safest way to get the desired result.
your code fails due to that you set transform.eulerAngles.z to a float out of 0 - 360. transform.eulerAngles set method only works in the range between 0 and 360.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CameraRotationExample : MonoBehaviour
{
public float rotationSpeed = 30;
float z;
void Update()
{
z += Input.GetAxis("Horizontal") * rotationSpeed * Time.deltaTime;
z = Mathf.Clamp(z,-30,30);
transform.rotation = Quaternion.Euler(transform.eulerAngles.x,transform.eulerAngles.y,z);
}
}
Amazing, thank you so much. It's good to see i was pretty close though. have a great day!
you’re welcone, i’d always use quaternion.euler as a setter method, it get’s you the desired results in most cases
Your answer
Follow this Question
Related Questions
How can i get Transform component rotation value which seen in editor inspector? 0 Answers
Rotating Camera around Player's X-axis while rotating Player around its Y-axis (using mouse input) 0 Answers
android camera rotation using gyro sensor 1 Answer
Wrong .rotation.eulerAngles.x output 1 Answer
Quaternion Roation Mouse Script 0 Answers