[Unity6] Raycastで特定のオブジェクトを無視/貫通させる方法。

(2025/02/25)
[Unity6] Raycastで特定のオブジェクトを無視/貫通させる方法。

開発環境
  • Unityのバージョン : 6000.0.36f1
  • 方法1 : Ignore Raycastレイヤーを設定する

    Raycastで無視したいオブジェクトのInspectorウィンドウの上部にある「Layer」ドロップダウンメニューから「Ignore Raycast」を選択します。

    [Unity6] Raycastで特定のオブジェクトを無視/貫通させる方法。

    Ignore Raycastを設定されたオブジェクトはRayが貫通します。

    方法2 : LayerMaskを使用する

    特定のレイヤーのみRayの対象にしたい場合は、レイヤーマスクを使用します。この方法では、指定したレイヤー以外のオブジェクトすべてが無視されます。

    using UnityEngine;
    
    public class SampleScript : MonoBehaviour
    {
        [SerializeField] private float raycastDistance = 100f; // 光線を飛ばす距離
    
        void Update()
        {
            // Enemyという名前のレイヤーのオブジェクトのみRayが当たるようになる
            int layerMask = LayerMask.GetMask("Enemy");
            if (Physics.Raycast(transform.position, transform.forward, out RaycastHit hit, raycastDistance, layerMask))
            {
                Debug.Log("Hit: " + hit.collider.gameObject.name);
            }
        }
    }