在VR中锁定摄像机位置

本文关键字:摄像机 位置 锁定 VR | 更新日期: 2023-09-27 18:08:01

我正在玩一些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度,摄像机就会在角色的左边结束。我希望相机保持在一个固定的位置。

在VR中锁定摄像机位置

你只想上/下。这和只绕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);
    }
}

您可能想看看这条规则。