为什么旋转的 X 值与 Unity 对象上的 Y 和 Z 值表现不同?

Why does the X value of a rotation behave differently from Y and Z on Unity objects?

我有以下代码:

private void Update()
{
    Vector3 currRotation = transform.localRotation.eulerAngles;
    currRotation = new Vector3(currRotation.x + 2, currRotation.y, currRotation.z);
    transform.localRotation = Quaternion.Euler(currRotation);
}

无论脚本附加到什么,都会绕 X 轴旋转。

我对使用其他方式旋转对象不感兴趣,因为这是我如何在我创建的应用程序中处理对象旋转的一个小模型。

当我将“+1”添加到 Y 和 Z 坐标时,它会继续旋转,但是,当它在 X 上时,它的行为会有所不同。当 X 通过 90 度标记并设置时,它似乎从 90 中减去而不是继续添加它。

所以当我将 X 设置为 94 时,下次我读取 X 时它是 86。

为什么会这样?

您看到的问题是 Gimbal Lock 引起的。查看以下内容: https://answers.unity.com/questions/573035/avoiding-gimbal-lock.html