[英]Lock camera position in VR
我正在玩VR,到目前為止,我可以移動角色等等。 但是,相機的位置正在改變。 我希望我的相機處於固定位置,並且只能使用HMD更改上/下位置和正常旋轉。
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度,則相機將在角色的左端結束。 我希望相機保持在固定位置。
您只想向上/向下。 這與僅繞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);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.