我目前正在尝试使用 Oculus Rift 让某些东西飞起来。
唯一的控制是 Oculus 相机。
球员总是在前进,但我想让他旋转、上升和下降。要向上,玩家必须向上看 10° 到 45°,所有方向都相同。
我目前正在使用 Unity,我得到一个关于相机旋转的四元数。
有脚本在做吗?我自己怎么做,或者至少,如何将四元数转换为旋转?
我目前正在尝试使用 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
.