2016-09-21 3 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で回転します。回転する前に、他の2つの軸(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

50/50で動作しますが、頭を90度回すと90度回転します。私が持っていたコードはこれを修正していました。 – Desutoroiya

+0

50/50はどういう意味ですか? 90度回転する角度は? – Programmer

+0

カメラの位置は良いですが、回転はありません。コンポーネントの値はそれが正しいと言います。 VR眼鏡はどのくらい90度回転しますか? – Desutoroiya

0

this ruleをご覧ください。

これについてはUnity's documentationを参照してください。

+0

私はそれを知っています、私は少し私の質問を変更しました。私はVRで痩せた動きをしたくない。 – Desutoroiya

関連する問題