ニュース

Top  >   26. XRIの基本構成  >   Q, 掴んだ瞬間をスクリプトで取りたい

Q, 掴んだ瞬間をスクリプトで取りたい

2026/03/20

メインコンテンツへスキップ
< すべてのカテゴリに戻る

A,結論

  • XR Base Interactable の選択イベントを使うと、掴んだ瞬間や離した瞬間を取得できます。
  • XRI では Update 監視よりイベント利用の方が分かりやすいです。

原因 / 背景

  • 毎フレーム状態を調べるより、必要な瞬間だけ処理を呼ぶ方が見通しが良くなります。
  • 音再生や状態切替にも向いています。

実装 / 手順

  1. 対象に XR Grab Interactable を付けます。
  2. selectEntered / selectExited に処理を登録します。
  3. 再利用できるように別コンポーネントへ分けておくと保守しやすいです。

サンプルコード

using UnityEngine;
using UnityEngine.XR.Interaction.Toolkit;
using UnityEngine.XR.Interaction.Toolkit.Interactables;
using UnityEngine.XR.Interaction.Toolkit.Interactors;

public class GrabEventExample : MonoBehaviour
{
    [SerializeField] private XRGrabInteractable grabInteractable;

    private void OnEnable()
    {
        if (grabInteractable != null)
        {
            grabInteractable.selectEntered.AddListener(OnSelectEntered);
            grabInteractable.selectExited.AddListener(OnSelectExited);
        }
    }

    private void OnDisable()
    {
        if (grabInteractable != null)
        {
            grabInteractable.selectEntered.RemoveListener(OnSelectEntered);
            grabInteractable.selectExited.RemoveListener(OnSelectExited);
        }
    }

    private void OnSelectEntered(SelectEnterEventArgs args)
    {
        Debug.Log($"掴まれました: {args.interactableObject.transform.name}");
    }

    private void OnSelectExited(SelectExitEventArgs args)
    {
        Debug.Log($"離されました: {args.interactableObject.transform.name}");
    }
}

※ 実機確認が必要な項目は、Editor だけで判断せず対象デバイスでも必ず動作確認してください。

難易度:Level 2(初心者)
対象プラットフォーム:PC,VR,Visual Studio,Unity
関連キーワード:XRI,selectEntered,イベント

Level 1-2 向けバナー