Tutti Lab

元シリコンバレー在住のおっさん技術者、モバイルVRアプリ開発に挑戦中

CardboardでVRアプリを作ってみる(1)

はじめに

Oculusが3月末に出荷開始、Viveのプリオーダーが開始され、PlayStation VRが$399での発売が公開されるなど、VR熱が一気に高まっておりますが、一方でGoogleのCardboardのように、スマホさえあれば安価に楽しめるVRは、VR市場の裾野を広げる上でとても重要だと思っています。

App Storeの黎明期を数々のインディーズアプリが牽引したように、VRも数多の個人開発者が市場を切り開いていく、という可能性も十分にあり得るのでは?少なくとも私はそんな未来を信じ、ぼちぼちモバイルVRアプリを作り始めました。まずはベタですが簡単なFPSシューティングゲームを作ってみようと思います。

f:id:tuti107:20160321102451p:plain

今回は、Unity+Cardboardで、iOS/Androidアプリでデモアプリを動かしてみるところから始めてみます。

CardboardでVRアプリを作ってみる(全体構成)

第1回(Cardboardのビルド)【今回】

第2回(シーンを構成)

第3回(敵を動かす)

第4回(敵を倒す)

第5回(敵を出現させる)

第6回(ゲームオーバーとコンティニュー処理)

ダウンロード

まずは開発環境の準備。

https://developers.google.com/cardboard/unity/download

から

  • Cardboard SDK for Unity (CardboardSDKForUnity.unitypackage)
  • デモ(CardboardDemoForUnity.unitypackage)

をそれぞれダウンロードします。なお、Unity5.4からはCardboardがネイティブサポートされるそうなので、この手順はUnity5.3迄、かもしれません。

デモアプリをエディタで試してみる

Unityを起動して適当なプロジェクトを作り、そこにダウンロードしたSDKとデモアプリを取り込みます。ProjectのAssets上にて右クリックし、Import Package→Custom Packageを選択。

f:id:tuti107:20160321104207p:plain

まずはダウンロードしたCardboardSDKForUnity.unitypackageを選択します。しばらくすると、

f:id:tuti107:20160321104601p:plain

このようなポップアップが表示されるので、Importボタンを押して、全て取り込みます。同様に、デモ(CardboardDemoForUnity.unitypackage)も取り込みます。

取り込みが完了したら、Assets→Cardboard→DemoSceneのDemoScene.unityをダブルクリックします。これでデモのシーンが読み込まれます。

f:id:tuti107:20160321105034p:plain

画面上部中央の再生ボタンを押すと、エディタ上でデモシーンが再生されます。Option(Alt)キーを押しながらマウスを操作することで、顔を向きをシミュレーションすることができます(360°あちこち見れます)。

f:id:tuti107:20160321105716p:plain

画面中央には照準が表示されます。照準は点で表示されていますが、箱やボタンに照準が当たると、上の図のように、円に変化します。この状態でマウスをクリックすると、箱が別の場所へ移動します。箱だけでなく、足元に設置されているボタン類も同様にクリック可能です。

iPhone上で実行

次にエディタ上で動かしたデモシーンをiPhone上で動かしてみます。File→Build Settingsより、iOSを選択、その後Player Settingsボタンをクリックします。

f:id:tuti107:20160321111201p:plain

すると、インスペクタ(デフォルトなら画面右部)に各種設定が現れますので、Resolution and PresentationのDefault OrientationをLandscape Leftとして横画面モードに(CardboardにiPhoneを横向きに設置するため)、Other SettingsのBundle Identifierに適当なIdentifier(XcodeにてBundle Identifierとして使用されます)を設定ののち、Build And Runボタンを押下します。これで、デモシーンがビルドされます。

f:id:tuti107:20160321112005p:plain

f:id:tuti107:20160321112026p:plain

Unity側のビルドが完了すると、自動的にXcodeが起動されます。ここでUnityが生成したコードが自動的にビルドされ、実行可能、のはずなのですが、

f:id:tuti107:20160321112358p:plain

なにやらエラーが。ビットコードを無効化せよ、とのことなので、XcodeのBuild Settings→Build Options→Enable Bitcodeを「No」にして、再度ビルドします。

f:id:tuti107:20160321112903p:plain

今度こそ大丈夫かと思いきや、またエラーが。今度は_SecTrustEvaluateが無いと。なので、 General→Linked Frameworks and Librariesにて「Security Framework」を追加します。

f:id:tuti107:20160321113249p:plain

これでようやくビルド完了です。なお、Cardboard右上に設置されたボタンを押すことで、エディタ上で実行した際の「クリック」となります。段ボールのギミックでボタンを押すとスクリーンがタッチされるようになっているようですね。

※iPhone6S plusにて動作確認済み(他機種では試せておりません)

Android上で実行

File→Build Settingsより、Androidを選択します。iPhoneの時に設定した画面向きやBundle Identifierはそのまま有効ですので、Build And Runボタンを押下するだけです。こちらも、いろいろエラーが出るのかと思いきや、Xcodeのように外部IDEが起動することもなく、そのままAndroid端末上で実行されました。

※Galaxy S6にて動作確認済み(他機種では試せておりません)

まとめ

今回は、CardboardにてFPSシューティングゲームを開発することを目指し、まずはCardboardのデモシーンをiPhone/Android上で実行してみました。次回からこのデモシーンをベースに、冒頭の写真のゲームに仕上げていこうと思います。