Chapter 5: モノの制御法とボタン配置を学ぼう
前回 Chapter 4 まで終わりましたので、5からやっていきます。
Chapter 4は記事を上げた後でエラーが解決して、apkファイルを実機にインストールしてみたのですが、自分でいじったアプリを実機で動かせるというのはやはり感動しますね。
さて、このチャプターではXR Tool Kitを使用して、オブジェクトに対してユーザーからアクセスする方法を学べるようです。わくわくしますね。
Near-Far Interactor:オブジェクトを触る/つかむ
コントローラーを使用してオブジェクトを触ったりつかんだりするための機能をInteractorと言いますが、Near-Far Interactorは、コントローラーでオブジェクトをつかむことができる機能です。
GameObjectに対して、XR Grab Interactable というコンポーネントを加えることで、コントローラーによる干渉を設定できます。
設定した時点でコントローラーによる持つという動作を行うことができました。
スクショ貼りたいんですが、Meta QuestでUnityのシーンを実行しているとスクショがうまくできず…
今度調べておきますね。
オブジェクトに対してそのままXR Grab Interactableを付与すると、オブジェクトの中心を持つようになってしまう(=コントローラーがオブジェクトにめり込んだ状態で持ってしまう)ので、オブジェクトの持ち手を作る必要があります。
対象のオブジェクトに子オブジェクトを作成し、Positionを設定します。


子のPositionは親からの相対位置になるので、親の中心点からZ軸で-1のところに設定しておきます。
最後に親のXR Grab InteractableのAttach Transformに、作成した子オブジェクトを追加したら持ち手の完成です。

持てた!っていう画像を貼りたいんですが…
後は、遠くのものを持ったときに、遠いまま操作するか、手元に引き寄せるかを、XR Grab InteractableコンポーネントのFar Attach Modeから変更できます。
最初は「Defer To Interactor」で、遠くのものは遠いままでしたが、「Near」に変更すると、持った時に手元にオブジェクトが引き寄せられます。
アイテムを拾ったりするときに、いちいちコントローラーを引っ張るのも大変ですもんね。

Interactable Events
次はものを持ったり、持とうとしたりといったイベントについてです。
- Hover
-
いわゆるホバーです。
そのオブジェクトを持たなくても、コントローラーから伸びる線が当たっていたり、コントローラーを近づけたりするときのイベントです。
- Select
-
オブジェクトを持つというイベントです。
中指のボタンを押し、オブジェクトを持つときに発生します。
- Activate
-
オブジェクトを持った状態で、人差し指のトリガーを引くと発生するイベントです。
オブジェクトを「使用する」と言いますが、持ったオブジェクトを使用する際には慣例的に人差し指のトリガーが使われることが多いようです。
それぞれについて、開始/終了のイベントが設定されていて、イベントと処理を紐づけることができます。
今日はここまで。
コメント