Teachers open the door but You must enter by yourself.

Open Media Lab.
オープンメディアラボ

HTC Vive Pro2 の環境構築

  1. Edit/Project Settings/XR Plugin Management をインストール
  2. XR Plugin Management/OpenXR を選択して、更に Enabled Interaction Profiles の+ボタンを押して HTC Vive Controller Profile を追加
  3. XR Plugin Management/Project Valideation を選択して、更に「Fix All」ボタンを押す。しばらく待つと警告メッセージが消える
  4. Window/Package Manager で XR Inteaction Toolkit をインストール、Samples/Starter Assets をインポート
  5. 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
  6. Hierarcy に XR/XR Origin (VR) を追加
  7. Assets/Samples/XR Interaction Toolkit/2.x.x/Starter Assets/XRI Default Input Actions.inputactions のInspectorでGenerate C# Classにチェック Applyボタンを押す
  8. コントローラのモデルを表示させたい場合は、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

背景となる山を配置

  1. 3個に複製しながらpositionを(-240,0,0),(-240,0,500),(-240,0,1000)に設定
  2. TerrainColliderは不要なのでチェックを外す
  3. VRで確認する

馬をスタート位置に配置

  1. positionを(5,0,300)に設定
  2. XR Origin (VR)をHourseの子に移動positionをリセット
  3. 再生してXR Origin (VR)のポジションを調整し、調整後のpositionの値をコピー
  4. 再生を停止してXR Origin (VR)のポジションのpositionに値をペースト
  5. 馬の機能を呈するスクリプトを作成し、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");
    	}
    
    }
    
  6. Mainという名前の空のオブジェクトを生成し、以下のスクリプトをアタッチ
    
    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class Main : MonoBehaviour
    {
    	void Start()
    	{
    		GameObject.Find("/Horse").GetComponent().Run();
    	}
    }
    
  7. 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 Powered by MathJax