WonderPlanet DEVELOPER BLOG

ワンダープラネットの開発者ブログです。モバイルゲーム開発情報を発信。

Controller Emulatorを利用してDaydream実機なしでDaydream対応アプリを開発する方法

R&D事業部の近藤です。
今回はDaydreamのコントローラーのエミューレーターの導入方法を紹介します。

Daydreamにはレーターポインターのようなコントローラーが付属します。
WiiリモコンのようにポインターをオブジェクトやボタンなどのUIをクリックしてアプリを操作します。
しかしDaydreamは日本国内ではまだ販売されておらず入手するのはやや困難です。

そこで、Google VR SDKにはコントローラーをエミュレートして、Android端末をコントローラーとして使えるようにできるようになっています。
Daydream本体を持っていなくても開発ができるようになります。

導入前の準備

Daydream導入編の記事を参考にGoogle VR SDKをインポートして、Daydreamが使えるように準備しましょう。

Unity + Daydream開発はじめの一歩(2017.6月最新版) - WonderPlanet DEVELOPER BLOG

コントローラーエミュレーターのアプリのインストール

こちらのページからエミュレーターのアプリをダウンロードできますので、Android端末にインストールしましょう。
https://developers.google.com/vr/daydream/controller-emulator

インストールしたアプリを起動するとこのような画面が表示されます。
f:id:HidehikoKondo:20170707145604p:plain

Touchpad

タッチパッドの触っている部分により方向を判別して操作します。 ダブルクリックするとクリックできます。(本物のコントローラではシングルクリック)

Appボタン

Appボタンのクリックイベントをアプリに送信します。 このイベントをトリガーにして任意の動作をつけることができる。

Homeボタン

顔が向いている方向とカメラの方向がずれているときに、このボタンを押すと向きをあわせます(リセンター)。 本物のコントローラーの場合は、クリックするとDaydreamのホーム画面に戻ります。 長押しするとリセンターします。

Unity側の設定

コントローラエミュレータのプレハブの配置

インポートしたGoogle VR SDKにコントローラーエミュレーターを利用するのに必要なプレハブが含まれています。
「GvrControllerMain」「GvrEditorEmulator」「GvrControllerPointer」の3つを下のスクリーンショットのように配置します。 「GvrControllerPointer」はplayerオブジェクトの子オブジェクトとして配置します。

f:id:HidehikoKondo:20170628124821p:plain

コントローラーの設定

Hierarchyから「GvrControllerMain」を選択して、Inspectorを開きます。
「Emulator Connection Mode」の項目で「USB」または「Wi-Fi」の接続方法を選択します。 f:id:HidehikoKondo:20170627170437p:plain

USB

PCとAndroid端末をUSBケーブルを利用して接続します。
この接続方法でコントローラーを使用するには、事前にadbのパスを通しておく必要があります。

Wi-Fi

Wi-Fiを利用してワイヤレスでコントローラーエミュレーターを使用することができます。
PCとAndroid端末を同じWi-Fiアクセスポイントに接続します。
この接続方法でコントローラーを使用するためには「EmulatorConfig.cs」をIPアドレスを設定する必要があります。
IPアドレスは、コントローラーエミュレーターのアプリの画面上に記載されているIPアドレスを設定します。
f:id:HidehikoKondo:20170627171332p:plain

実行

エディターで実行ボタンを押します。
コントローラーエミュレーターの画面上部が緑色で「Connected」と表示されたら成功です!
コントローラーの傾きに応じてUnityの画面上に表示された白色のポインターが動きます。

f:id:HidehikoKondo:20170627172011p:plain
f:id:HidehikoKondo:20170627172854p:plain

これでDaydeamの実機がない状態でコントローラーの操作をエミュレートできるようになりました。
この記事ではとりあえずポインターが動かせる状態になっただけですが
もちろんクリックやスワイプの操作に応じてアプリ上のオブジェクトやUIを操作することもできます。
そのあたりの実装方法はまた次回の記事で紹介します。