前提・実現したいこと
unityのOculus(Quest2)を使用するVRの3dゲームで
グリップが握られていれば基本的には正面に移動
→もしコントローラーのスティックが倒されればその方向に視点を回転
というコードを書こうとしているのですが、試しにコードを書いてみるとなぜか斜め方向に移動してしまいます。
どのように直せば正面に進めるようになるか教えていただけないでしょうか。
発生している問題・エラーメッセージ
正面に進めない。
具体的には、初期のカメラの回転が(0,90,0)の状態で、スティックを1度も倒さずにグリップを握ると斜め右に進んでいきます。
該当のソースコード
c#
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4 5 6public class PlayerMove : MonoBehaviour 7{ 8 float speed = 0.01f; 9 10 // Start is called before the first frame update 11 void Start() 12 { 13 } 14 15 // Update is called once per frame 16 void Update() 17 { 18 if (OVRInput.Get(OVRInput.RawButton.LHandTrigger)) 19 { 20 Move(); 21 } 22 23 } 24 25 void Move() 26 { 27 28 Vector3 changerotation = new Vector3(0, 0, 0); 29 30 if (OVRInput.Get(OVRInput.RawButton.LThumbstickLeft)) 31 { 32 changerotation.y = -0.1f; 33 } 34 35 if (OVRInput.Get(OVRInput.RawButton.LThumbstickRight)) 36 { 37 changerotation.y = 0.1f; 38 } 39 40 //OVRCameraRigの回転 41 this.transform.rotation = this.transform.rotation * (Quaternion.Euler(changerotation)); 42 //OVRCameraRigの位置変更 43 this.transform.position += this.transform.rotation * new Vector3(speed,0,speed) ; 44 45 46 } 47 48 49} 50
補足情報(FW/ツールのバージョンなど)
Unity 2019.4.14f
Oculus Integration 28.0
###追加情報
VR関連のコード
if (OVRInput.Get(OVRInput.RawButton.LHandTrigger))
・・・グリップが握られていると処理が走る
if (OVRInput.Get(OVRInput.RawButton.LThumbstickLeft))
・・・コントローラーのスティックが左に倒されていると処理が走る
if (OVRInput.Get(OVRInput.RawButton.LThumbstickRight))
・・・コントローラーのスティックが右に倒されていると処理が走る
現在OVRCamerarig(VR用のカメラ)にスクリプトがアタッチしてあり、これが一番上のオブジェクトです。
今正面を向いているはずなのですが、まっすぐ走ろうとすると右側の壁に衝突します。
回答2件
あなたの回答
tips
プレビュー