【Unity】Rayを特定のLayerに当てる方法

unity

こんにちは、のっくんです。

今日は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に変えるだけで良いのです。

本日は以上です。

それでは。

ABOUTこの記事をかいた人

個人アプリ開発者。Python、Swift、Unityのことを発信します。月間2.5万PVブログ運営。 Twitter:@yamagablog