目標
これを最速で実現しましょう。
読めばすぐ分かるんですけど、意外とここまでの解説が存在せず2時間ぐらいかかったのでまとめる。
前提
- rayつきコントローラーが表示されている
- コントローラーで動くことができる
が条件です。
稚拙ですが過去にまとめた記事がありますので、ここが実装できてない場合は先にこちらを。
https://qiita.com/yoshimatsu_taishi/items/42bbccd6b5337ba4c8fc
環境
- Unity 2021.3.29
-
Meta XR Core SDK 68.0.3
Quest向けに開発するSDK -
Meta XR Simulator 68.0.2
UnityのGame上でVRの動きを確認できるシミュレーター -
Meta XR Interaction SDK 68.0.0
インタラクト系のSDK - 実機:MetaQuest3
手法
Building Blockからゲームオブジェクトを置く
・Meta > Tools > Building Blocksを開きます。
・Ray InteractionをHierarchyにドラッグアンドドロップします。
これで8割完成です。Building Blocksシステム考えた人ほんとうに神𝑮𝑶𝑶𝑫です
(宗教上の理由で表現を変えました)
するとinteractするようのモデルがシーンに現れます。
Hierarchy上では"[BuildingBlock]Ray Interaction"というゲームオブジェクト名です。
(レンダーパイプラインの関係でマテリアルエラーを起こしていますが本編と関係ないので許容)
ちょこっとコライダーに関して解説を挟みます。
・"[BuildingBlock] Ray Interaction"に追加されているRayInteractableコンポーネントがその名の通り、rayでinteractすることを可能にする機能です。
・Surface項目に子の"Collider"というゲームオブジェクトがアタッチされていますね。
・"Collider"ゲームオブジェクトにアタッチされているコンポーネントを確認してみると、
Unityで元々用意されているBoxColliderと、Quest向け開発用のCollider Surfaceというコンポーネントがアタッチされています。
公式マニュアルにあるように、これを使うことでray interactの接触を判断しているみたいですね。
https://developers.meta.com/horizon/documentation/unity/unity-isdk-surfaces/?locale=ja_JP
引用:
サーフェスコンポーネントは、3D空間内の幾何学的サーフェスを表示します。これは、Unityの物理演算に依存しない、インタラクターの衝突面として動作します。RayInteractableとPokeInteractableはどちらも、ポインターのドラッグオーバーシュートとタッチ制限(ボタンなどのオブジェクトをポークしたときに指が止まるポイント)を処理するためにサーフェスコンポーネントを使用します。
ColliderSurfaceは、メッシュコライダーなどのコライダーとのインタラクションに使用されます。
eventを設定する
・先ほど追加した [BuildingBlock] Ray Interactionに、
Interactable Unity Event Wrapperコンポーネントをアタッチします。
このスクリプトを使うことで、イベントの内容とトリガーを設定できる(と僕は思っている)
公式の解説はこちら
https://developers.meta.com/horizon/reference/unity/v69/class_oculus_interaction_interactable_unity_event_wrapper?locale=ja_JP
・試しに[BuildingBlock] Ray Interactionにinteractしたら同じシーン内に存在しているSphereが消えるようにイベントを設定してみました。
・詳しくは下記の画像参照
完成
これでinteractする方法がわかったので、あとは各々のシーンに合わせて、interact後の挙動をスクリプトなどで作ればいいっていうことですね。やったね!
参考
こわくない Meta Quest 開発
Interaction SDKのサンプルシーン解説でお世話になりました
https://qiita.com/shogo0x2e/items/9ed38c3004cf374d0070
Interactable Unity Event Wrapperをつければいいんや!って気づかせてくれた解説
https://zenn.dev/mzn_yuina/scraps/89d67dfcc53dfb