[Unity] Easy Input で Oculus Go アプリにレーザーポインター機能を簡単追加 3
※ Easy Input for Gear VR and Oculus Go バージョン 1.2、Pack Gesta Furniture #1 バージョン 1.1、Unity バージョン 2018.2.6f1 のときの内容です。
ポインターで移動!
普通のレーザーポインターの設定 のときと同じく、Laser Material にレーザーとなる LineRenderer の Material を設定、Laser Start Color と Laser End Color は、レーザーの開始点~終了点の色を設定。Reticle は、照準となるオブジェクト、Reticle Color は照準の色だね。Reticle には、前回まで使っていた Sphere オブジェクトを設定してみるよ。
それから、Collider Raycast のチェックをオン、Layers To Check を Everything にすれば、ポインターで Collider のあるオブジェクトを指すことができるようになるね。
そして、Cube オブジェクトに「Standard Teleport Receiver」スクリプトを追加。
以上で、カーブを描くレーザーポインターで、部屋の中を移動できるようになったはず……!
Standard Teleport Receiver のパラメーター、Time Lockout は、移動した後、次のクリックを受け付ける最短の秒数だよ。
それから、Teleport Mode を「Show Laser On Condition Start」にすると、移動ボタンを押したときだけレーザーを表示する UI にできるよ。このモードのときは、Laser に表示するレーザーオブジェクトを指定しよう。今回の例では、Pointer スクリプトを含む TrackedRemote オブジェクトを Laser に指定すればいいってことだね。
あと、Standard Teleport Receiver を、Terrain に追加すれば、Gaia で造った地形も VR 空間で移動できるようになるね。移動できるって楽しい!
- Segments Count: 曲がったレーザーを構成する線の数
- Segment Length: ひとつの線の長さ
- Segment Curve Degrees: 線と線との角度
線の数を増やして、ひとつの線の長さを短く、角度を浅くすると、きれいなカーブになるね。
一区切り?
でも、試してない機能として、ボタンとか Unity の GUI をポインターで選択したりする機能はまだだし……、コントローラーの Touch サーフェスのスワイプとか、コントローラーの傾きによる入力もまだかな。
左手
OVRTrackedRemote スクリプトを直接編集して、OVRInput.GetActiveController()
で実行中にコントローラーの種類を設定するようにすれば解決かな。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
void Update() | |
{ | |
bool controllerConnected = OVRInput.IsControllerConnected(m_controller); | |
if ((controllerConnected != m_prevControllerConnected) || !m_prevControllerConnectedCached) | |
{ | |
// (追加した行) | |
m_controller = OVRInput.GetActiveController(); | |
m_modelOculusGoController.SetActive(controllerConnected && m_isOculusGo); | |
m_modelGearVrController.SetActive(controllerConnected && !m_isOculusGo); | |
m_prevControllerConnected = controllerConnected; | |
m_prevControllerConnectedCached = true; | |
} | |
if (!controllerConnected) | |
{ | |
return; | |
} | |
} |
※ 公式のドキュメント等を参考に一ユーザーとして書いた記事です。詳細は、公式のドキュメントを確認してください。
最新記事 by kei (全て見る)
- プロ生ちゃんチョコプログラミングコンテスト2024開催! - 2024/02/13
- HSP プログラムコンテスト2023 結果発表&プロ生ちゃん賞発表! #hsp3 - 2023/12/04
- プロ生ちゃんクリスマスプログラミングコンテスト2023開催! - 2023/12/04