2016-09-21 113 views
0

我正在玩VR,到目前爲止,我可以移動一個角色,等等。然而,相機的位置正在改變。我希望我的相機處於固定位置,只能用HMD改變上/下位置和正常旋轉。在VR中鎖定相機位置

void Start() 
{ 
    startPos = transform.localPosition; 
    parentObj = transform.root; 
} 

void Update() 
{ 
    ResetVR(); 
} 

void ResetVR() 
{ 
    if (parentObj != null) 
    { 
     startPos -= InputTracking.GetLocalPosition(VRNode.CenterEye);  
     transform.localRotation = Quaternion.Inverse(parentObj.localRotation); 
    } 
} 

有了這個我的角色正常旋轉,但相機不會停留在一個固定的位置。

例如,如果我旋轉90度,相機會在角色左側結束。我希望相機保持在固定位置。

回答

0

你只想上/下。這與僅圍繞x軸旋轉相同。獲取原始位置。將Quaternion轉換爲角度,然後使用transform.localEulerAngles而不是transform.localRotation旋轉。在旋轉之前用originalPos變量覆蓋其他兩個軸(y,z)。您可能需要修改此以使其正常工作。

Transform parentObj; 
Vector3 startPos; 
Vector3 originalPos; 

void Start() 
{ 
    startPos = transform.localPosition; 
    originalPos = transform.localPosition; 
    parentObj = transform.root; 
} 

void Update() 
{ 
    ResetVR(); 
} 

void ResetVR() 
{ 
    if (parentObj != null) 
    { 
     startPos -= InputTracking.GetLocalPosition(VRNode.CenterEye); 

     Quaternion tempRot = Quaternion.Inverse(parentObj.localRotation); 
     Vector3 newAngle = tempRot.eulerAngles; 
     transform.localEulerAngles = new Vector3(newAngle.x, originalPos.y, originalPos.z); 
    } 
} 
+0

它可以工作50/50,但是如果我將頭轉90度,旋轉角度現在會增加90度。我的代碼是解決這個問題。 – Desutoroiya

+0

50/50是什麼意思?它旋轉多少角度90度? – Programmer

+0

相機的位置很好,但旋轉不是。該組件的值表示它是正確的。 VR眼鏡多好轉90度。 – Desutoroiya