こんにちは、のっくんです。
今日はUnityのRayについて解説していきます。
Rayはオブジェクトのタッチ検出に使われるものです。
脱出ゲームなどで何かをタッチしたのを検出するにはRayを使って検出します。
その際に大事になるのがLayerです。
物体がどのLayerに属しているかを予め設定しておけば、Rayの対象範囲を場合分けすることができるのです。
- 手前のオブジェクトをスルーして奥のオブジェクトだけを検出したい。
- 逆に手前のオブジェクトだけを検出したい。
そういう時にはLayerを設定してみましょう。

Unityの右上にLayersというボタンがあるのでこれで適当な名前のLayerを追加します。

オブジェクトはCubeとSphereの2つを用意しました。

CubeのLayerを8にセットします。

SphereのLayerを9にセットします。
あとはスクリプト書いていきます。
Raycast時にマスクを設定してあげることで特定のLayerにだけ照射できるようになります。
void Update() { if (Input.GetMouseButtonDown(0)) { // シーン内のクリックを検出する Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); RaycastHit hit; // Layer8の場合 int mask = 1 << 8; if (Physics.Raycast(ray, out hit, Mathf.Infinity, mask)) { } } }
Layer9にだけ照射する場合には、maskの8を9に変えるだけで良いのです。
本日は以上です。
それでは。