我正在玩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度,相机会在角色的左侧结束。我希望相机保持固定位置。
答案 0 :(得分: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);
}
}
答案 1 :(得分:0)
您可能需要查看this rule。