Unity中的Google Cardboard:如何设置Head的旋转?

时间:2016-04-28 05:40:40

标签: unity3d rotation google-cardboard virtual-reality

好吧,我已尝试过一切,但我在Unity3D中使用Google Cardboard创建了一个VR应用程序,而我正试图设置头部对象的旋转。我可以通过打印head1.transform.localRotation并使用public CardboardHead head1;获取Head对象来打印Head对象的旋转到控制台,但是与其他对象不同,我无法更改此旋转。

我意识到CardboardHead脚本会不断覆盖并设置Head对象的旋转:

if (trackRotation) {
      var rot = Cardboard.SDK.HeadPose.Orientation;
      if (target == null) {
        transform.localRotation = rot;

      } else {
        transform.rotation = target.rotation * rot;
      }
    }

我甚至试图改变这些值,但是我只是想暂时改变头部物体的旋转,以便Head对象能够快速移动"在我的游戏结束后轮到一定的旋转(之后如果他们转过头,Head对象就像正常一样转动)

我只想让玩家"看起来"某处(我希望他们面对画布)但是当我尝试改变Head对象的旋转时:

head1.transform.rotation = new Quaternion(0.0f,0.0f,0.0f,0.0f);

head1.transform.localRotation = new Quaternion(0.0f,90.0f,70.0f,80.0f);

什么都没发生。 Head对象保持在最初设置的旋转中,似乎是(1.0,0.0,0.0,1.0)。为什么是这样?如何更改头部旋转,以便用户面向画布/指向设定方向?

1 个答案:

答案 0 :(得分:0)

  head1.transform.localRotation = new Quaternion(0.0f,90.0f,70.0f,80.0f);

我怀疑这是一个有效的四元数,更可能是一个欧拉旋转:

  head1.transform.localRotation = Quaternion.Euler(90.0f,70.0f,80.0f);

您最好的拍摄方法是停用纸板,这样它就不会尝试覆盖旋转。你有一个HeadController可以根据状态激活GoogleCardboard或其他脚本。这样可以保持GoogleCardboard的清洁。