[Unity] Easy Input で Oculus Go アプリにレーザーポインター機能を簡単追加 1

2018/09/16Development,Pronama-chanEasy Input,Oculus Go,Unity

今日は、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 をインポートします!

ローポリな家具のアセットだけど、サンプル Scene に家具を配置した部屋が用意されているので、これをそのまま使うよ。

Pack Gesta Furniture #1
そのまま VR 空間で見るだけでも楽しいね🎶

コントローラーの追加

Oculus Go のコントローラーを追加するよ~。

その前に、Scene の Camera のある位置に、プレイヤーとなるオブジェクトとして 3D Object の Capsule を追加して、元からある Camera を Capsule の「子」にして。

Capsule を追加して、Camera を「子」に
Oculus Go のコントローラーのモデルは、アセットの Oculus Integration にあるから、インポートしよう。VR のみでいいよ。
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 CheckEverything にすると、レーザーの先に Collider を設定したオブジェクトがあると、その位置に照準を表示、なければ Reticle Distance の位置に照準が表示されるよ。


タンスのモデルには Mesh Collider を追加しておいたわ。照準が表示されるのがわかるわね。

※ 公式のドキュメント等を参考に一ユーザーとして書いた記事です。詳細は、公式のドキュメントを確認してください。

The following two tabs change content below.
都内の公立高校に通う高校生。部活は、情報処理研究会。身体を動かすのも好きで、気が向いたときはなぜか体育会系の部活に混ぜてもらっていろんなスポーツをすることも。プログラミング生放送のキャラクターとして活動中!