- Home /
Rotation from AngleAxis() ToAngleAxis() flips back and forth
I could use some pointers on how Quaternion.AngleAxis() and Quaternion.ToAngleAxis() works.
What I'm trying to do is to rotate a box 90 degrees around the X-Axis each time I scroll the mouse-wheel forwards. Everything works fine until the box have made a full 360 degree rotation, that is 4 forwards on the mouse-wheel, and starts the second 'lap' of rotation. Suddenly the box rotates forward one step and when I scroll the mouse-wheel the next time it rotates back to 0 degrees.
Here is the code for picking the angles.
if (scroll > 0){
rot = 0f;
Vector3 right = transform.right;
float angle = 0f;
transform.rotation.ToAngleAxis(out angle, out right);
angle = angle + 90f;
startRotation = transform.rotation;
endRotation = Quaternion.AngleAxis(angle, Vector3.right);
}
And the code for the actual rotation
if (rot < 1f){
rot = rot + Time.deltaTime * 4f;
transform.rotation = Quaternion.Lerp(startRotation, endRotation, rot);
}
Any suggestions to what's causing this are very appreciated.
i will help with that, just gimmie a sec to test what u got.
Answer by Braindrift · Mar 27, 2013 at 01:37 AM
Solved it. Instead of taking the transform.rotation as start position for the rotation I did the same as with endRotation and used AngleAxis to calculate the start rotation as well.
if (scroll > 0){
rot = 0f;
Vector3 right = transform.right;
float angle = 0f;
transform.rotation.ToAngleAxis(out angle, out right);
startRotation = Quaternion.AngleAxis(angle, Vector3.right);
angle = angle + 90f;
endRotation = Quaternion.AngleAxis(angle, Vector3.right);
}
oh i just realised my code is a waste i didnt read x axis. there is also an asset called unity constraints that makes all that stuff easy as.
Your answer
Follow this Question
Related Questions
Flip over an object (smooth transition) 3 Answers
object is not rotating from right direction 0 Answers
Quaternions acting up 1 Answer
How to always rotate clockwise 1 Answer