HTC Vive Pro2 の環境構築
- Edit/Project Settings/XR Plugin Management をインストール
- XR Plugin Management/OpenXR を選択して、更に Enabled Interaction Profiles の+ボタンを押して HTC Vive Controller Profile を追加
- XR Plugin Management/Project Valideation を選択して、更に「Fix All」ボタンを押す。しばらく待つと警告メッセージが消える
- Window/Package Manager で XR Inteaction Toolkit をインストール、Samples/Starter Assets をインポート
- Edit/Project Settings/Preset Manager/Add Default Preset/Component/XR/XR Controller (Action-based) Filterに“Left”、“Right" PresetにXRI Default Left ControllerとXRI Default Right Controller
- Hierarcy に XR/XR Origin (VR) を追加
- Assets/Samples/XR Interaction Toolkit/2.x.x/Starter Assets/XRI Default Input Actions.inputactions のInspectorでGenerate C# Classにチェック Applyボタンを押す
- コントローラのモデルを表示させたい場合は、LeftHand Controller/Model PrefabにC:\Program Files (x86)\Steam\steamapps\common\SteamVR\resources\rendermodels\vr_controller_vive_1_5/vr_controller_vive_1_5.obj
背景となる山を配置
- 3個に複製しながらpositionを(-240,0,0),(-240,0,500),(-240,0,1000)に設定
- TerrainColliderは不要なのでチェックを外す
- VRで確認する
馬をスタート位置に配置
- positionを(5,0,300)に設定
- XR Origin (VR)をHourseの子に移動positionをリセット
- 再生してXR Origin (VR)のポジションを調整し、調整後のpositionの値をコピー
- 再生を停止してXR Origin (VR)のポジションのpositionに値をペースト
- 馬の機能を呈するスクリプトを作成し、Horseにアタッチ
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Horse : MonoBehaviour
{
CharacterController controller;
Animator animator;
public float speed = 7.5f;
public bool running;
void Awake(){
controller = GetComponent();
animator = GetComponent();
animator.SetInteger("Vertical", 1);
}
void Update(){//馬を前に進める
if(running){
var forward=transform.TransformDirection(Vector3.forward);
controller.Move(forward * speed * Time.deltaTime);
}
}
public void Run(){
running = true;
animator.SetTrigger("run");
}
public void Stop(){
running = false;
animator.SetTrigger("stop");
}
}
- Mainという名前の空のオブジェクトを生成し、以下のスクリプトをアタッチ
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Main : MonoBehaviour
{
void Start()
{
GameObject.Find("/Horse").GetComponent().Run();
}
}
- VRで確認する
ゲームコントローラの入力を使用するコード
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.InputSystem;
public class Someone : MonoBehaviour
{
void Awake(){
XRIDefaultInputActions inputActions=new XRIDefaultInputActions();
inputActions.Enable();
inputActions.XRIRightHandInteraction.Activate.performed+=OnActivate;
inputActions.XRIRightHandInteraction.Activate.started+=OnActivateOn;
inputActions.XRIRightHandInteraction.Activate.canceled+=OnActivateOff;
input.XRILeftHandInteraction.Activate.started+=OnSubmitPressed;
input.XRIRightHandInteraction.Activate.started+=OnSubmitPressed;
}
GameObject leftController;
GameObject rightController;
void Start(){
leftController=GameObject.Find("Left Controller");
rightController=GameObject.Find("Right Controller");
}
void Update(){
transform.position=leftController.transform.position;
transform.rotation=leftController.transform.rotation;
}
public void OnActivate(InputAction.CallbackContext context){
Debug.Log("pressed");
}
}
This site is powered by