2016-04-28 117 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