通过Quaternion了解旋转

时间:2015-01-07 14:47:26

标签: unity3d rotation quaternions oculus

我目前正试图用Oculus Rift制作一些东西。

唯一的控制是Oculus相机。

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

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

有没有脚本在做什么?我怎样才能自己完成,或者至少如何将四元数转换为旋转?

1 个答案:

答案 0 :(得分:0)

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

任何脚本中的

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