【Unity】Debug.DrawRay

2023年3月23日

Debug.DrawRayは、Unityゲームエンジンの機能の1つで、ゲームオブジェクトからRayを発射して、そのRayの終点に線を描画することができます。これは、開発者がシーン内のオブジェクトの位置や衝突判定をテストするために使用されます。

具体的には、開発者は、Debug.DrawRayを使用して、オブジェクトが正しく配置されているか、Rayが期待通りに動作しているか、オブジェクトがRayに対して正しく反応しているかを確認することができます。また、開発者は、Rayを可視化することで、プレイヤーが何が起こっているのかを理解しやすくすることができます。

Debug.DrawRayは、開発者がスクリプトを書く際に頻繁に使用される機能の1つであり、デバッグのために非常に便利です。

サンプル

以下は、Debug.DrawRayの簡単な例です。この例では、プレイヤーがマウスカーソルに向けてRayを発射するようになっています。Rayの終点に線を描画して、プレイヤーがどの方向に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を可視化する
        Debug.DrawRay(ray.origin, ray.direction * rayLength, Color.red);
    }
}

この例では、プレイヤーがマウスの位置に向けてRayを発射しています。Debug.DrawRayメソッドを使用して、Rayの始点(ray.origin)と方向(ray.direction * rayLength)を指定しています。また、線の色も赤色に設定しています。プレイヤーがマウスを動かすたびに、Rayの方向が可視化されます。

rayの描画している時間を指定したい場合

Debug.DrawRayを使用してRayを描画する際に、持続時間を指定することができます。具体的には、Debug.DrawRayメソッドの最後の引数に、描画したい時間を秒単位で指定することができます。

以下は、持続時間を1秒に設定した例です。

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を可視化する
        Debug.DrawRay(ray.origin, ray.direction * rayLength, Color.red, 1f);
    }
}

この例では、Debug.DrawRayメソッドの最後の引数に1.0fを指定しています。これにより、Rayの描画が1秒間持続し、その後自動的に消えます。

持続時間を指定することで、Rayが継続的に描画されるのを避けることができます。また、長時間Rayを描画しておくと、処理負荷が増える可能性があるため、適切な持続時間を設定することが重要です。

Unity

Posted by hidepon