Hello, I’m using following code to set object’s rotation in my custom (in-game) level editor:
Quaternion quat = LevEditGlobals.currentGO.transform.rotation;
Vector3 rot = quat.eulerAngles;
if (transformAxis == Axis.X){
rot.x = float.Parse(this.GetComponent<InputField>().text,System.Globalization.CultureInfo.InvariantCulture.NumberFormat);
}
if (transformAxis == Axis.Y){
rot.y = float.Parse(this.GetComponent<InputField>().text,System.Globalization.CultureInfo.InvariantCulture.NumberFormat);
}
if (transformAxis == Axis.Z){
rot.z = float.Parse(this.GetComponent<InputField>().text,System.Globalization.CultureInfo.InvariantCulture.NumberFormat);
}
quat.eulerAngles = rot;
LevEditGlobals.currentGO.transform.rotation = quat;
As you can see, first I get object’s current rotation, then I set specific items, based on values of specific variable. So far, so good.
The problem is that when I try to set last one (Z), the real thing that is being changed is rotation on Y axis for some reason (and yes, transformAxis equals Axis.Z). No points for guessing what happens when I trty to change Y rotation (it changes Y rotation, spoiler alert).
I guess problem rises from my use of euler angles, but I don’t know how to write it in quaternion code.