[Unity6] Raycast入門:3Dでの使い方・Rayの可視化も解説。

(2025/02/24)
[Unity6] Raycast入門:3Dでの使い方・Debug.DrawRayによるRayの可視化を解説。

開発環境
  • Unityのバージョン : 6000.0.36f1
  • Raycast入門:3Dでの使い方・Debug.DrawRayによるRayの可視化を解説。

    Raycastとは、指定した方向へ「光線(Ray)」を飛ばし、衝突したオブジェクトの情報を取得する機能です。 光線は目に見えませんが、ゲームの内部で様々な処理を行うために使用されます。
    例えば、
    銃弾が何かに当たったか?
    プレイヤーの視線の先に何があるか?
    マウスカーソルがどのオブジェクトを指しているか?
    といったことを判定するときに使います。

    Raycastの使い方

    Physics.Raycast関数を使うことで、Raycastを使うことが出来ます。

    using UnityEngine;
    
    public class SampleScript : MonoBehaviour
    {
        [SerializeField] private float RaycastDistance = 100f; // 光線を飛ばす距離
    
        void Update()
        {
            // Rayの始点と方向を定義
            Vector3 origin = transform.position; // オブジェクトの現在位置
            Vector3 direction = transform.forward; // オブジェクトの向いている方向
    
            // 衝突情報を格納する変数
            RaycastHit hit;
    
            // Raycastを実行
            if (Physics.Raycast(origin, direction, out hit, RaycastDistance))
            {
                // 衝突したオブジェクトの名前、位置、タグをログに出力
                Debug.Log("Hit object: " + hit.collider.gameObject.name);
                Debug.Log("Hit position: " + hit.point);
                Debug.Log("Hit tag: " + hit.collider.gameObject.tag);
            }
        }
    } 
    

    Rayの可視化(デバッグ用)

    Debug.DrawRay関数を使用すると、Raycastで使用しているRayをシーンビューに描画して可視化できます。 これにより、Rayが意図した方向に飛んでいるか、どのオブジェクトに衝突しているかを視覚的に確認でき、 デバッグが容易になります。

    using UnityEngine;
    
    public class SampleScript : MonoBehaviour
    {
        [SerializeField] private float RaycastDistance = 100f; // 光線を飛ばす距離
    
        void Update()
        {
            // Rayの始点と方向を定義
            Vector3 origin = transform.position; // オブジェクトの現在位置
            Vector3 direction = transform.forward; // オブジェクトの向いている方向
    
            Debug.DrawRay(origin, direction * RaycastDistance, Color.red);
        }
    } 
    

    DrawRayを使った場合下の画像のように赤い線がシーンビューで見えるようになります。
    ※Debug.DrawRayは、あくまでシーンビューにのみ描画され、ゲームビューには表示されません。

    [Unity6] Raycast入門:3Dでの使い方・Debug.DrawRayによるRayの可視化を解説。