アウトドアとかゲーム開発とか

ロードバイクやキャンプなどアウトドアとUnityでの開発とか

【VR】SteamVR×モノビットエンジン【Unity】

SteamVRでモノビットエンジンを使う方法について
※SteamVR 1.0当時の内容です。2.0では若干変更があります

1.MUN(モノビット公式)とSteamVR Plugin(アセットストア)をインポートします
f:id:vrcycling:20181026144803p:plain

※一旦再生ボタンを押しておきます
 SteamVRの初期設定についてはここでは省略します

2.[CameraRig]プレハブをシーンに入れ、「MainCamera」を非アクティブにします
f:id:vrcycling:20181026145950p:plain

3.ルーム入室用のスクリプトを用意します
空のGameObjectをシーンに作り、「MonobitAutoLoginTemplate」をAddComponentの「Monobit Networking Support」からアタッチします
f:id:vrcycling:20181026150303p:plain

4.プレイヤーを用意します
シーンに空のGameObjectを作り、「Player」という名前に変更します。
Assetsフォルダに「Resources」フォルダを作成し、先ほど作ったPlayerをD&Dしプレハブ化します。
シーン内のPlayerは削除します。
f:id:vrcycling:20181026150545p:plain

5.プレイヤープレハブをマルチ対応します
プレイヤープレハブに「MonobitView」コンポーネントをアタッチします
f:id:vrcycling:20181026150833p:plain

6.シーン上の「Monobit Auto Login Template」のPrefabにPlayerプレハブを指定します
f:id:vrcycling:20181026151026p:plain

7.「Monobit Auto Login Template」のスクリプトを変更します
プレハブにメインカメラを設定している個所の122~134行目をコメントアウトします。
f:id:vrcycling:20181026151317p:plain

8.マルチ確認用にPlayerプレハブにオブジェクトを追加します
プレイヤープレハブの子にCubeを追加し、Scaleを0.3くらいにします
f:id:vrcycling:20181026153004p:plain

9.プレイヤーブレハブに位置の同期をとるため「Monobit Transform View」をアタッチします
その後、プレイヤープレハブのMonobit Viewの監視リストに追加したMonobit Transform Viewを指定します
f:id:vrcycling:20181026153149p:plain

10.プレイヤープレハブにCameraの位置を取得するスクリプトを追加します
Playerスクリプトを作成し下記のようにします

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using MonobitEngine;

public class Player : MonobitEngine.MonoBehaviour {

	GameObject camera;
	
	void Start () 
	{
		camera = GameObject.Find("Camera");
	}
	
	void Update () 
	{
		if(!monobitView.isMine)
			return;
		
		transform.position = camera.transform.position;
		transform.rotation = camera.transform.rotation;
	}
}

11.複数クライアントで実行してみましょう
相手の頭の位置にキューブが表示され、動きが同期されていればOKです

手の位置を取得する場合は「Controller (left)」「Controller (right)」のtransformを取得すればOKです