在X和Z GLOBAL轴上旋转对象

时间:2019-09-12 07:26:51

标签: c# unity3d

我有以下情况:

我的场景中有一个圆柱,并且有两个下拉菜单。通过下拉菜单,我可以选择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轴旋转。但是我的尝试都没有导致预期的行为。

1 个答案:

答案 0 :(得分:2)

您可以使用此:

gameObject.transform.localEulerAngles = new Vector3(xRot, 0, zRot);

或者对于全局轴:

gameObject.transform.eulerAngles = new Vector3(xRot, 0, zRot);