読者です 読者をやめる 読者になる 読者になる

プロトソリューション エンジニアブログ

プロトソリューションで開発しているWebサイト、iPhone、Androidアプリの開発情報などを発信していきます

UnityでFPS(前編)

ハイサイ!プロトデータセンター新卒のIREIです。


今回の記事ではUnityでGear VR用のアプリ開発事例を紹介します。
開発環境とBLEコントローラでの操作は整った前提で作業を進めていきます。


それでは本題に入ります。
まずUnityで提供されたVR Samplesに含まれているステージを使用したいので、
これをインポートしていきます。
f:id:pdcokinawa:20160722125928p:plain


Unityを立ち上げたら「Window」 -> 「Asset Store」を選択していきます。
(Macをお使いの方は「⌘9」でショートカットできます。)
f:id:pdcokinawa:20160722120841p:plain



Asset Storeが開いたら、検索窓に「VR Samples」と入力して検索します。
VR Samplesが表示されるので、インポートボタンを押してUnityにインポートしていきます。
インポートが完了するとAssetsフォルダには以下のように色々と追加されるはずです。
f:id:pdcokinawa:20160722121139p:plain


今回使用するステージを取り込みましょう。
Assets -> VRSampleScenes -> Prefabs -> Maze -> MazeCourseを選択
f:id:pdcokinawa:20160722121324p:plain



選択したらHierarchyビューにドラッグアンドドロップを行い、Sceneビューに追加したステージを確認します。
f:id:pdcokinawa:20160722121431p:plain




BLEコントローラで操作するキャラクターを設置したら、敵となるキャラクターを配置していきます。
本記事では、Assets -> VRSampleScenes -> Prefabs -> Shooter -> ShooterWeaponを使用しました。
f:id:pdcokinawa:20160722125429p:plain


Assets -> VRSampleScenes -> Prefabs -> Maze -> MazeCharacterを選択
選択したらステージと同じようにSceneビューにドラッグアンドドロップで4体追加します。
f:id:pdcokinawa:20160722125536p:plain


敵が経路探索できるエリアを設定していきましょう。
ステージのMazeCourseを選択 -> InspectorビューのStaticをチェックし、Navigation Staticにします。
Window -> Navigation ->を選択し、Navigationビューを表示させてBakeを押します。


すると以下のように移動できる範囲が青く表示されました!
f:id:pdcokinawa:20160722121619p:plain



ここまででNav Mesh Agentが設定された敵キャラクターの移動可能エリアを設定しました。


ただ、これだけだとまだ対象物を追跡できないので、スクリプトを作成して追跡させましょう!
以下がコードです。

using UnityEngine;
using System.Collections;

public class Move : MonoBehaviour {

	public GameObject player;	// プレイヤー
	private NavMeshAgent agent;	// 敵

	// Use this for initialization
	void Start () {
		agent = GetComponent<NavMeshAgent> ();	// 初期設定
	}
	
	// Update is called once per frame
	void Update () {
		agent.SetDestination (player.transform.position);	// SetDestinationで追跡したい対象キャラ(プレイヤー)のポジションを指定
	}
}

簡単ですねw


実際のプレイ動画が用意出来次第、追加します。
VRは体験の共有が難しいですね。。

今回作成したものをGear VRをかぶって体験した時、敵が目の前まで近づくとぶつかってはいけないと思い、
条件反射的に後ろに顔を引いてしまいましたw


ここまで読んで頂きありがとうございました!


次回はシューティングの実装となります。