OculusGo HMDの方向に前進するコード解説メモ
概要
Oculus GoのHMDの向いている方向に沿って前進するコードを実装したときのメモです。 参考コード記事とともにご覧くださいませ。
デモ
コード
using System.Collections; using System.Collections.Generic; using UnityEngine; using System; //RigidBodyコンポーネント自動付加されます [RequireComponent(typeof(Rigidbody))] public class Walk : MonoBehaviour { Rigidbody m_Rigidbody; [SerializeField] float ForceGravity = 100f; [SerializeField] private Transform _centerEyeAnchor = null; [SerializeField] private float _moveSpeed = 2; // Use this for initialization void Start() { //Playerに付加されているRigidBodyコンポーネントの取得 rb = GetComponent<Rigidbody>(); } void FixedUpdate() { float x = 0.05f; float z = 0.05f; Vector2 touchPad = OVRInput.Get(OVRInput.Axis2D.PrimaryTouchpad); if (touchPad.x > 0.5 && -0.5 < touchPad.y && touchPad.y < 0.5) //キー右部押す { transform.Rotate(new Vector3(0.0f, 0.5f, 0.0f)); // 右回転 } if (touchPad.x < -0.5 && -0.5 < touchPad.y && touchPad.y < 0.5) //キー左部押す { transform.Rotate(new Vector3(0.0f, -0.5f, 0.0f)); //左回転 } if (touchPad.y > 0.5 && -0.5 < touchPad.x && touchPad.x < 0.5) //キー上部押す { //CenterEyeAnchorの前に向いている方向へRigidBodyポジションを移動 rb.position += _centerEyeAnchor.transform.forward * z; } if (touchPad.y < -0.5 && -0.5 < touchPad.x && touchPad.x < 0.5) //キー下部押す { z -= 0.1f; // 単なるバック rb.position += this.transform.forward * z; } //プレイヤー落下速度調整 rb.AddForce(Vector3.down * ForceGravity, ForceMode.Acceleration); } }
CenterEyeAnchorとPlayerオブジェクトのヒエラルキーの指定メモ画像です