2016-09-21 1 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.localRotation 대신 transform.localEulerAngles으로 회전하십시오. 회전하기 전에 다른 두 축 (y, z)을 originalPos 변수로 덮어 씁니다. 에 올바르게 작동하려면이 설정을 수정하려면이 필요합니다.

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

머리가 90도 회전하면 50/50 회전이되지만 90도 회전이됩니다. 내가 가진 코드는 이것을 고치고 있었다. – Desutoroiya

+0

50/50는 무엇을 의미합니까? 어떤 각도로 90도 더 회전합니까? – Programmer

+0

카메라의 위치는 양호하지만 회전은 아닙니다. 구성 요소의 값은 그것이 맞다고 말합니다. VR 안경은 90도 더 회전합니다. – Desutoroiya

0

this rule을보고 싶을 수도 있습니다.

Unity's documentation을 참조하십시오.

+0

나는 그것을 알고, 나는 조금 내 질문을 변경했습니다. VR만을 사용하여 마른 움직임을 원하지 않습니다. – Desutoroiya

관련 문제