今日は、Oculus Go と Gear VR のコントローラーで、レーザーポインターとかのよくある操作を簡単に実現できる Unity アセット「
Easy Input for Gear VR and Oculus Go 」を使ってみるよ。
※ Easy Input for Gear VR and Oculus Go バージョン 1.2、Pack Gesta Furniture #1 バージョン 1.1、Unity バージョン 2018.2.6f1 のときの内容です。
事前準備
Unity で Oculus Go アプリをビルド・実行する方法は調べてみてね。まずは、Easy Input をインポート!
インポートすると、推奨の設定などが表示がされるわね。
必要・推奨な環境になっていないみたいだね。Android プラットフォームの選択と XR サポート設定は必須だけど、
あまり重要じゃないので Ingore ボタンで無視していいよ。
プラットフォームが Android であること
Player Settings の XR Settings で Virtual Reality Supported に Oculus が追加されていること
Player Settings の Other Settings の Minimum API Level が level 24 以上であること
アセット Oculus Utilities (Oculus Integration ) がインポートされていること
Oculus 署名ファイル(osig) が配置されていること
サンプル Scene を確認
たくさんサンプル Scene が付いてるから、確認してみて。どんなことができるかわかるし、サンプルを参考にしながら使うといいかも。今回のレーザーポインターは「Pointer Types Example」で確認できるよ。
バージョン 1.2 では、Oculus Go で見たとき正しく表示されない Scene がひとつあるけど、アセット購入後にパブリッシャーのサポート Web サイトから問い合わせるとその修正を含むベータ版のアセットがもらえたよ。
Easy Input Helper を追加
それではアプリ開発に。最初に、メニュー GameObject – Easy Input Helper – Add Easy Input Helper から、Easy Input Helper という Easy Input のグローバル設定用のオブジェクトを追加しよう。
パラメーターはデフォルトのままでよさそうね。
Max Press Length: タッチパッドでタップと認識する許容移動距離
Required Swipe Length: スワイプと認識するのに必要な移動距離
Max Quick Tap Time: クイックタップと認識する許容押下時間
Min Long Tap Time: ロングタップと認識するのに必要な押下時間
Max Double Tap Time: ダブルタップと認識する許容間隔
サンプル用 VR 空間を準備
Pack Gesta Furniture #1
コントローラーの追加
Oculus Go のコントローラーを追加するよ~。
その前に、Scene の Camera のある位置に、プレイヤーとなるオブジェクトとして 3D Object の Capsule を追加して、元からある Camera を Capsule の「子」にして。
Capsule を追加して、Camera を「子」に
Oculus Integration のインポート
そして、Oculus/VR/Prefabs/TrackedRemote を Capsule の「子」に追加。
TrackedRemote を Capsule の「子」に
レーザーポインター機能の追加
Easy Input を使って、コントローラーにレーザーポインターの機能を追加するよ。Easy Input ではコントローラーオブジェクトに Pointer 系のスクリプトを追加すると実現できるみたい。
TrackedRemote オブジェクトに、インスペクターから「StandardLaserPointer 」スクリプトを追加! ちなみに違う種類の Pointer スクリプトもあるよ。
これを設定するだけで、スクリプトを追加したオブジェクトからレーザーが出るのね。
Laser Material に、レーザーとなる LineRenderer の Material を設定ね。とりあえず Easy Input for Gear VR/Media フォルダーに「lineRendererMaterial」という Material を、そのままドラッグ&ドロップして使ってみるわ。
Laser Start Color , Laser End Color で、レーザーの開始点~終点の色を設定っと。
できた~!
レーザーの長さは Laser Distance で変わるよ。
レーザーの太さを変えるには、スクリプトを直接編集する必要があるよ。
コントローラーの位置が低かったり高かったりしたときは Height Offset で調整してね。
照準の追加
続いて、レーザーの先に照準(Reticle)を追加するよ。
3D Object の Sphere を追加して
Collider を削除
Scale を 0.5 ぐらいに設定、
Material を Easy Input for Gear VR/Media フォルダーの reticleMaterial に設定。
照準となる Sphere を追加
TrackedRemote の
Standard Laser Pointer の
Reticle に追加した Sphere を設定、
Reticle Distance は、照準までの距離、
Reticle Color に照準の色を設定。
それから、
Collider Raycast のチェックをオンにして、Layers To Check を Everything にすると、レーザーの先に Collider を設定したオブジェクトがあると、その位置に照準を表示、なければ Reticle Distance の位置に照準が表示されるよ。
タンスのモデルには Mesh Collider を追加しておいたわ。照準が表示されるのがわかるわね。
※ 公式のドキュメント等を参考に一ユーザーとして書いた記事です。詳細は、公式のドキュメントを確認してください。