2015-05-04 94 views
2

我在限制旋转时遇到了问题。我已将此脚本添加到Cardboard Main对象,Head对象和Main Camera对象中,但没有成功。这是我到目前为止,并没有停止轮换。如何在Unity3D Google Cardboard中限制头部旋转?

void FixedUpdate() { 

    if (transform.eulerAngles.y > 60 && transform.eulerAngles.y < 190) 
    { 

     transform.eulerAngles = new Vector3(transform.eulerAngles.x, 60, transform.eulerAngles.z); 
    } 

    if (transform.eulerAngles.y > 190 && transform.eulerAngles.y < 300) 
    { 

     transform.eulerAngles = new Vector3(transform.eulerAngles.x, 300, transform.eulerAngles.z); 
    } 
} 

在此先感谢!

回答

3

谷歌纸板SDK的代码设置每个框架的头方向。即使你设置了它们,它们在执行时也会覆盖它。如果您想调整头部运动,请修改Cardboard脚本。

另外,你不应该这样做。在VR应用程序中强制用户进行某些相机移动是一种使他们迷失方向或恶心的简单方法。你想通过限制头部的可能方向来达到什么目的?

+0

我需要限制头部取向的原因是因为敌人只来自一个方向。 –

+0

这个原因不够好。如果玩家想要背对敌人,让他。如果你担心他不知道在哪里寻找他们,在他身后放一堵墙。这样他可以自由地环顾四周,并知道在哪里寻找敌人。 –

+0

好的,谢谢我不会限制旋转。但现在的另一个问题是,我如何获得设备所面对的方向?沿着x和y轴说北,南,东或西? –

0

在CardboardHead.cs,UpdateHead()下添加此下方bool updateEarly

public float limit = 0.5f; 

然后改变:

transform.localRotation = rot; 

到:

transform.localRotation = Quaternion.Slerp(rot, Quaternion.Euler(Vector3.forward), limit); 

这会给你一个极限头部对象上的参数,您可以使用该参数来限制纸板旋转的灵敏度。