Unityでスマホ対応のVRを作ろう

目次

今回やること

VR空間の宝島を冒険して宝を探すゲームをUnityで作ります
バージョンは2018でやっていますが恐らく他のバージョンでも問題ないと思います

  • VR用のカメラを入れる
  • UnityRemoteのダウンロードと接続
  • プレイヤーを動かす
  • 宝箱を置く
  • 宝箱を取ったらクリア出来るようにする
  • エフェクトや動物を追加する

VR用のカメラを入れる

既に設定をしてあるものをこちらに作っておきましたのでダウンロードしてインポートして下さい
パッケージのインポートの仕方はこちらを参考にしてください

UnityRemoteのダウンロードと接続

PCとスマホを接続してお手軽にVRを楽しむにはUnityRemoteというアプリが必要です
UnityRemoteはPCと接続してUnityでテストプレイすると画面をスマホに写してくれます

UnityRemoteの使い方
Android/ios端末
  • アプリを起動する
  • PCと接続する(必ず充電用ではなくデータ通信用を使う)

Unity

  • テストプレイを実行する

以下トラブルシューティングを基に確実に設定しましょう

UnityRemoteが繋がらない時のトラブルシューティング
Android端末

  • 提供元不明のアプリにチェック
  • USBデバッグにチェック
  • Unityremoteをダウンロード

ios端末

  • PCを信頼する
  • ituneと同期させる

PC

  • JAVAのインストール
  • Android SDK のインストール
  • 各自持っている端末にしたがってADKドライバを手に入れる(機種名、ドライバ、ダウンロードで検索)
  • デバイスマネージャーで端末にドライバを認識させる

Unity

  • JAVA と ANDROID SDK、2つのPATHを通す(Edit → Preference → External Tools → Android SDK、Android JDK)
  • Edit → Project Setting → Editor → device で any andoroid device(iphoneの場合は繋ぐと機種名が表示されるのでそれを選択)
  • file → build setting でアンドロイド(iphoneの場合はios)にプラットホームを合わせて
    switch platform する
  • file → build setting でシーンを add current する

以上でスマホの画面にUnityの画面が映るようになります

VRのフィールドを作ろう

フィールドは今回、Unityのterrainという機能を使って作ります
terrainの使い方はこちらにまとめておきましたので作ってみて下さい
画像のようにできたら、次に進みます

プレイヤーを動かそう

プレイヤーを動かします
仕組みとしては今スマホの向きに合わせてプレイヤーの向きが変わるようになっています
なので、向いている方向に自動で進むようにします
また、重力処理もかけておきましょう
今回はCharacterControllerを使っていきます
まずは、Playerスクリプトを作成します
こちらを参考にスクリプトを作成しましょう

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

public class Player : MonoBehaviour {

	public float Walk;//歩く速さの変数
	private CharacterController charactercontroller;//CharacterControllerの変数
	private Vector3 velocity;//重力をかけるための変数

	// Use this for initialization
	void Start () {
		charactercontroller = GetComponent<CharacterController> ();//CharacterControllerを取得
	}
	
	// Update is called once per frame
	void Update () {
		transform.position += transform.TransformDirection(Vector3.forward * Walk * Time.deltaTime);//プレイヤーが向いている方向にWalk*時間の経過分だけ進む
		charactercontroller.Move (velocity);//charactercontrollerをvelocityの分だけ動かす
		velocity.y += Physics.gravity.y;//velocityのy軸の移動は重力の分だけ動かす
	}
}

上手くいっていると、このようにスマホを向けた方向にプレイヤーが進みます

宝箱を置こう

Assets → Prefabs → Chest にある宝箱を作成したステージに好きなように置きます

宝箱を取ったらクリア出来るようにしよう

宝箱に触れたらClearの文字が出るようにします
Playerスクリプトに以下のように追記しましょう

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

public class Player : MonoBehaviour {

	public float Walk;
	private CharacterController charactercontroller;
	private Vector3 velocity;
	public GameObject Clear1;//追記部分、右のカメラのClearの文字を指定
	public GameObject Clear2;//追記部分、左のカメラのClearの文字を指定

	// Use this for initialization
	void Start () {
		charactercontroller = GetComponent<charactercontroller> ();
		Clear1.SetActive(false);//追記部分、右のカメラのClearの文字を非表示にする
		Clear2.SetActive(false);//追記部分、左のカメラのClearの文字を非表示にする
	}
	
	// Update is called once per frame
	void Update () {
		transform.position += transform.TransformDirection(Vector3.forward * Walk * Time.deltaTime);
		charactercontroller.Move (velocity);
		velocity.y += Physics.gravity.y;
	}

	void OnCollisionEnter(Collision col)//追記部分ここから、衝突判定の処理
	{
		if (col.gameObject.tag == "Chest") {//衝突したオブジェクトのタグが"Chest"なら
			Clear1.SetActive(true);//右のカメラのClearの文字を表示する
			Clear2.SetActive(true);//左のカメラのClearの文字を表示する
		}
	}//追記部分ここまで
}

Canvas → Clear1とClear2をPlayerのPlayerスクリプトにD&Dします

宝箱に触れるとClearの文字が出ます

エフェクトや動物を追加しよう

Assets → Prefabs → Animals または Effectsにあるエフェクトや動物を作成したステージに好きなように置きます

できたらLet’s embark on a journey!!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメント一覧 (3件)

コメントする

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

目次