- Home /
Why is my rotation so weird?
So I made this simple car controller with wheel colliders, it basically moves forward, backward, sideways, anything, like a normal car. The controller itself is working fine, but when I use this code to rotate the steering wheel (with the A and D or arrow keys of course), it gives me an unexpected behaviour :
float horizontalInput = Input.GetAxis("Horizontal");
steeringWheel.rotation = Quaternion.Euler(0f, 0f, -horizontalInput * 105f);
Here I did * 105f because my steering rotation clamp is 105f (I want it to max rotate 105f and -105f). I also did -horizontalInput because that seems to be the right way for the steering to rotate. The rotation itself is pretty fine but the main problem is that it starts rotating on the other axes as well, like the y and z. There are no rigidbodies or colliders attached, and also I've noticed that it only occurs when the car is moving. What could be the cause?
Is this an issue of Transform.rotation vs. Transform.localRotation where the object rotates on the wrong axis if the vehicle isn't facing "forward"?
Or is this the matter of insignificantly small rotation values showing up in the editor (e.g. 1.05e-5, which means a 0.0000105-degree angle) when reconstructing the rotation back from a Quaternion into a Euler representation?
Answer by Norfinity · Mar 10, 2021 at 07:54 AM
Hi Maggiethegsd, you should calculate the rotation in local rotation instead of global rotation:
steeringWheel.localRotation = Quaternion.Euler(0f, 0f, -horizontalInput * 105f);
I hope I could help you with this
Your answer
Follow this Question
Related Questions
How to get Angle float of specific axis.(Turret clamping related). 2 Answers
When applying a 90 degree rotation to Euler Angles, it is over/undershooting sometimes.. 2 Answers
Detecting Opposite Rotations of two Pipes 1 Answer
[OAFAT]Why does transform.rotation.x = 45 not work 3 Answers
How to rotate an object around another 60 degrees with a keypress? 0 Answers