簡體   English   中英

在VR中鎖定相機位置

[英]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);
    }
}

您可能想看看這個規則

有關此信息,請參見Unity的文檔

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM