[Oculus]オブジェクトを掴んで投げられるようにする – OVRGabberとOVRGrabbable

2020年10月20日(更新: 2021年10月16日)

直感的に物を掴んで投げられるのはVRならではの楽しみ方です。

オブジェクトを掴めるようにするには”Oculus Integration”に含まれるスクリプトを利用すると楽です。

掴む側(手)の設定

掴む側のオブジェクトには、スクリプト OVRGabberCollider を設定します。左手を例に詳細を記載します。

まず、左手の LeftHandAnchor の子要素として、適当な Cube を作成します。ここでは名前を LeftHand としました。

Oculusで物を掴む左手となるオブジェクト

これが物を掴む手となります。スケールは(X:0.1, Y:0.2, Z:0.3)としています。

この LeftHand の”Box Collider”のプロパティである”Is Trigger”をONにします。これを行わないと掴もうとするオブジェクトと物理的衝突が起こってしまいます。

掴もうとするオブジェクトと手が衝突するのを避けるためにIsTriggerを有効にする

次は LeftHandAnchor の設定です。

ここにスクリプト OVRGrabber を追加し、”Grip Transform“に、先程追加した LeftHand をドラッグ&ドロップします。さらに Controller を”L Touch“に変更します。Player には両手を操作するプレイヤーとなるオブジェクトを指定します。

物を持ち上げるためのOVRGrabberスクリプトを追加して値を設定

“Grab Volumes” の項目は折りたたまれていますが、ここには LeftHand にアタッチしたコライダーを紐付ける必要があります(コメント欄参照)。

以上で掴む側の設定は完了です。右手も同様に設定します。

掴まれる側(物)の設定

掴まれるオブジェクトとして、適当な立方体(Cube)を作ります。

そのオブジェクトに、スクリプト OVRGrabbable を加えます。特にプロパティを変更する必要はありません。この時、持ち上げるのに必要な Rigidbody も自動的に追加されます。

掴まれるオブジェクトにOVRGrabbableを設定

これで掴まれる側の設定は完了です。

物を掴むテスト

手の部分が立方体(LeftHand)となっています。ゲーム内に直方体をいくつか配置し、手を近付けて中指のトリガーを引くと掴み上げることができると思います。

OVRGrabbableなオブジェクトを持ち上げるサンプル

腕を振って中指を離せば、掴んだ物体を投げ飛ばせます。

[Oculus]オブジェクトを掴んで投げられるようにする – OVRGabberとOVRGrabbable」への3件のフィードバック

  1. やまぴー

    はじめまして。
    参考にさせていただきまして、無事に実装出来ました。
    ありがとうございました。

    OVRGrabber の設定なのですが、Grab Volumes に LeftHand/Right Hand のコライダーを登録しないと、掴むことが出来ませんでした。
    1時間位悩んで出来たのですが、今後参考にされる方のため、よろしければ加筆いただけますと幸いです。

    返信
    1. JoyPlot 投稿作成者

      コメントありがとうございます!
      参考になったのであれば幸いです。

      >OVRGrabber の設定なのですが、Grab Volumes に LeftHand/Right Hand のコライダーを登録しないと、掴むことが出来ませんでした。
      こちらを明記することを失念しておりました。追記させていただきます。

      返信
      1. やまぴー

        JoyPlot 様

        >こちらを明記することを失念しておりました。追記させていただきます。

         お忙しい中をご対応いただきまして、ありがとうございました!
        他の記事も参考にさせていただいており、大変助かっております。

        返信

コメントを残す

メールアドレスが公開されることはありません。