我有以下情况:
我的场景中有一个圆柱,并且有两个下拉菜单。通过下拉菜单,我可以选择X轴和Z轴的旋转角度为0或90度。这种旋转必须始终在全局轴上,以便用户了解发生了什么。
当我在X轴上将对象旋转90度时,一切正常。当我尝试将其在Z轴上附加旋转90度时,对象正在绕Y轴而不是Z轴旋转。
我试图直接设置transform.rotation,transform.Rotate和transform.RotateAround,但是没有任何效果。
我要做的第一件事就是始终将旋转度重置为0。
Object.transform.rotation = Quaternion.identity;
我对Eulers的尝试
Object.transform.rotation = Quaternion.Euler(new Vector3(xRot, 0, zRot));
我的四元数尝试:
Object.transform.rotation = Quaternion.AngleAxis(xRot * 90, Vector3.right) * Quaternion.AngleAxis(zRot * 90, Vector3.forward);
我尝试旋转:
Object.transform.Rotate(new Vector3(xRot, 0, zRot), Space.World);
我的预期结果是无论当前旋转的对象是什么,该对象始终绕GLOBAL X / Z轴旋转。但是我的尝试都没有导致预期的行为。
答案 0 :(得分:2)
您可以使用此:
gameObject.transform.localEulerAngles = new Vector3(xRot, 0, zRot);
或者对于全局轴:
gameObject.transform.eulerAngles = new Vector3(xRot, 0, zRot);