【Unity】Debug.DrawRayを使ってrayがヒットした時の色を変える

Debug.DrawRayを使用して、Rayがヒットした場合としない場合で、描画する色を変更することができます。具体的には、Rayがヒットしたかどうかを判定して、その結果に応じてDebug.DrawRayメソッドの色を変更することができます。

サンプル

以下は、Rayがオブジェクトにヒットした場合は緑色、ヒットしなかった場合は赤色で描画する例です。

using UnityEngine;

public class PlayerController : MonoBehaviour
{
    // Rayの長さ
    public float rayLength = 10f;

    void Update()
    {
        // マウスの位置を取得
        Vector3 mousePosition = Input.mousePosition;

        // カメラからRayを発射する
        Ray ray = Camera.main.ScreenPointToRay(mousePosition);

        // Rayを発射し、ヒットしたオブジェクトを取得する
        RaycastHit hit;
        bool isHit = Physics.Raycast(ray, out hit, rayLength);

        // Rayを可視化する
        if (isHit)
        {
            // Rayがオブジェクトにヒットした場合は緑色で描画する
            Debug.DrawRay(ray.origin, ray.direction * hit.distance, Color.green);
        }
        else
        {
            // Rayがオブジェクトにヒットしなかった場合は赤色で描画する
            Debug.DrawRay(ray.origin, ray.direction * rayLength, Color.red);
        }
    }
}

この例では、Physics.Raycastメソッドを使用してRayがオブジェクトにヒットしたかどうかを判定しています。Rayがオブジェクトにヒットした場合は、ヒットしたオブジェクトまでの距離(hit.distance)を使用して、Debug.DrawRayメソッドの長さを設定しています。また、色も緑色に設定しています。Rayがオブジェクトにヒットしなかった場合は、Debug.DrawRayメソッドの長さをrayLengthに設定し、色を赤色に設定しています。

Unity

Posted by hidepon