[Unity] RaycastのlayerMaskの扱い方について

お世話になっております。
しゃまとんです。

UnityにはRaycastという機能があり、例えばあるオブジェクトの正面にrayを発射して
別のオブジェクトが存在するかを取得することが出来ます。

開発でRaycastを使う必要があり、使い始めたのですが勘違いはハマりポイントらしき点があったので
メモしておきたいと思います。

Raycastの使い方はこちらのサイトで分かりやすく説明されています。

おそらく基本的に使うのはPhysics.Raycastということで、使っていたのですが衝突が判定されなかった
のですが、LayerMaskの使い方を勘違いしておりました。

LayerMaskを使わなければ、Ignore RaycastにLayerを指定していないものをすべて検出されるのですが、
決められたものを検出したい場合はLayerMaskを使うと思います。

LayerMaskには文字通りMaskらしきものを設定しないといけません。
ということで、Layerの番号を取得して下記のようにしてやります。

ちなみにLayerを見てみると31まであります。多分bit管理ですよね。

layer_setting

簡単に確認してみました。cubeからsphereにrayを射出して当たったら色を変えます。

laycast_test

最初、取得した番号をそのまま渡していたので検出がうまくいきませんでした。
これで検出できるようになりました。よかったよかった。

サンプルにつかったのはこちらです。

GitHub – shamaton/LaycastSample

以上です。