Answers for "Quaternion rotation with normals bug: Only works into one direction?"
http://answers.unity.com/questions/1040857/quaternion-rotation-with-normals-bug-only-works-in.html
The latest answers for the question "Quaternion rotation with normals bug: Only works into one direction?"Answer by JoeStrout
http://answers.unity.com/answers/1040957/view.html
You can't just take parts out of the x/y/z/w components of a Quaternion like that. When you do, you make an invalid quaternion that doesn't even represent a rotation. I'm amazed it works at all — Unity is clearly doing some error-trapping and recovery here. But you shouldn't rely on it.
Try instead working with the Euler angles... this is not ideal either, but will generally work except for extreme angles:
transform.rotation = Quaternion.Euler(0, transform.rotation.eulerAngles.y, 0) * rot * iniRot;
Even better would probably be to keep track of your desired Y rotation in a separate property, and use that in the Quaternion.Euler call above rather than using the Y component of whatever your current rotation happens to be.Thu, 03 Sep 2015 18:50:21 GMTJoeStrout