MRが楽しい

MRやVRについて学習したことを書き残す

IgnoreRaycastレイヤーを使ってオブジェクトに対するレイキャストを無視する

本日は Unity の小ネタ枠です。
IgnoreRaycast レイヤーを使ってオブジェクトに対するレイキャストを無視する方法について記事にします。

IgnoreRaycastレイヤー

IgnoreRaycast レイヤーは Unity プロジェクトでデフォルトで用意されているレイキャストを無視するレイヤーです。
docs.unity3d.com

レイキャストを無視する

レイキャストを無視する機能は以下のような状況で役立ちます。
例えば、ハンドレイのポインターで目の前の Cube を無視して背後の Sphere を掴んで動かしたいような場合です。

この時、Cube の当たり判定をただ無効化してしまうと床との当たり判定もなくなるため、Cube は床をすり抜けて落ちていってしまいます。
床との当たり判定は維持しつつ、ハンドレイのポインターの当たり判定のみすり抜ける設定を行いたいです。

Cube オブジェクトの[Layer]を[IgnoreRaycast]に変更します。

これによって床との当たり判定は維持したまま、ハンドレイポインター(レイキャスト)のみすり抜けるようになります。
以下のように Cube をすり抜けて Sphere オブジェクトを選択して動かすことができました。