通过四元数了解旋转

Know rotation via Quaternion

我目前正在尝试使用 Oculus Rift 制作一些东西。

唯一的控件是 Oculus 相机。

玩家一直在向前移动,但我想让他旋转、上升和下降。要上升,玩家必须向上看 10° 到 45°,所有方向都一样。

我目前正在使用 Unity,我得到了一个关于相机旋转的四元数。

有脚本吗?我该如何自己做,或者至少如何将四元数转换为旋转?

好消息!出于您的目的,您不需要直接处理四元数。不过,一点点矢量数学可能会有所帮助。

transform.forward 在任何脚本中都会为您提供脚本所附对象的前进方向。如果它在相机上,它将是玩家正在看的方向。

仅使用摄像机的前向和玩家移动的前向,您可以计算出玩家旋转所需的信息。

Vector3.Angle(transform.forward, cameraObject.transform.forward) 会给出两个正向之间的角度。

Vector3.Cross(transform.forward, cameraObject.transform.forward)会给你旋转轴。

您可以检查角度是否在想要的范围内,然后使用

transform.Rotate(Vector3.Cross(transform.forward, cameraObject.transform.forward), rotationSpeed * Time.deltaTime) 执行旋转。如果旋转方向与您想要的方向相反,您可能需要将两个参数的顺序切换为 Vector3.Cross.