2016-04-28 115 views
-1

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

我意识到CardboardHead脚本连续覆盖,并设置头部目标位置的旋转:

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

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

而且我甚至试图改变这些值,但是我只是想改变杆头对象的旋转暂时让头对象在我的游戏中的圆形结束后“捕捉”到某个旋转(之后,如果他们转动头部的头部对象变成正常)

我只是想让玩家“看”某处(我想让他们面对一个画布),但是当我试图改变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)。为什么是这样?如何更改头部旋转,以便用户将面对画布/指向设置的方向?

回答

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的清洁。

+0

我试过欧拉没有成功..我将如何激活或停用脚本?考虑到我想在用户返回原始位置后返回GoogleCardboard正常头部追踪,您会建议在定时器上关闭吗? – skyguy