UnityでプレイヤーをVR HMD基準で移動させたい
Unity、C#共に初心者でVRゲームを制作しています。
実現したいのはX,Z軸はワールド座標と同じでY軸だけがVR HMDと一致した状態でローカル座標を利用してプレイヤーが移動できる事です。
発生している問題・エラーメッセージ
transform.Translateで他のオブジェクトを指定するとすべての軸が指定したオブジェクト基準になる。
今回の場合はVRHMDが指定されているので現実で上を向いて前進を入力した場合はプレイヤーが上に進んでしまう。
該当のソースコード
ヒエラルキーはこのようになっていて下記のスクリプトがPlayerにアタッチされています。
C#
1using UnityEngine; 2using Valve.VR; 3 4public class Move : MonoBehaviour 5{ 6 public SteamVR_Action_Vector2 actionMove = SteamVR_Input.GetAction<SteamVR_Action_Vector2>("default", "Move"); 7 public SteamVR_Action_Vector2 actionRotation = SteamVR_Input.GetAction<SteamVR_Action_Vector2>("default", "Rotation"); 8 public GameObject VRCamera; 9 public float speedX = 4.0f; 10 public float speedZ = 5.0f; 11 public float speedRotation = 150.0f; 12 13 private float translationX; 14 private float translationZ; 15 private float rotation; 16 private void Update() 17 { 18 translationX = actionMove.axis.x * speedX; 19 translationZ = actionMove.axis.y * speedZ; 20 rotation = actionRotation.axis.x * speedRotation; 21 22 translationZ *= Time.deltaTime; 23 translationX *= Time.deltaTime; 24 rotation *= Time.deltaTime; 25 26 transform.Translate(translationX,0f,translationZ,VRCamera.transform); 27 transform.Rotate(0f,rotation,0f); 28 } 29} 30
試したこと
transform.Translateをローカル座標にする。
現実で体の向きを変えてもプレイスペースの向きは変わらないため、進行方向が見ている方向と一致しなくなった。
C#
1transform.Translate(translationX,0f,translationZ,Space.Self);
環境
Windows10 Pro 1903
Oculus Rift CV1
SteamVR 1.6.10
Unity2018.4.5f1
SteamVR Plugin 2.3.2 (sdk 1.4.18)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。