2015-05-04 125 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); 

這會給你一個極限頭部對象上的參數,您可以使用該參數來限制紙板旋轉的靈敏度。