【Unity】Debug.DrawLineでデバッグ用のラインを描画する

【Unity】Debug.DrawLineでデバッグ用のラインを描画する Unity
記事内に広告が含まれています。
スポンサーリンク

記事作成時の動作環境

  • Unity 2022.3.1f1

Debug.DrawLine

この記事では、デバッグ用ラインを描画する「Debug.DrawLine」について紹介します。

パラメータ

Debug.DrawLineのパラメータは以下の通りになっています。

Debug.DrawLine(Vector3 start, Vector3 end, Color color, float duration, bool depthTest);
  • start:ラインの開始位置(ワールド座標)※必須
  • end:ラインの終了位置(ワールド座標)※必須
  • color:ラインの色
  • duration:ラインを表示する時間(秒)
  • depthTest:オブジェクトとぶつかった時にラインを隠すかどうか

指定が必須なのは開始位置と終了位置のみで、残りは省略可能です。

省略すると「color= Color.white」、「duration= 0.0f」、「depthTest= true」となります。

depthTestの比較

depthTest=falseの場合、ラインとオブジェクトが重なってもそのまま描画されます。

depthTest=trueの場合、ラインとオブジェクトが重なっている部分が薄くなります。

使い方

「Debug.DrawLine」を使うとデバッグ用のラインを描画することができます。

デバッグ用なので、描画したラインはゲームビュー(ゲーム画面)には表示されません。

また、ギズモ描画がOFFになっているとラインが描画されません。

試しに、オブジェクト同士を繋ぐラインを描画してみます。

以下はサンプルスクリプトです。

using UnityEngine;

public class DrawLineTest : MonoBehaviour
{
    GameObject target;
    [SerializeField] string targetName;

    void Start()
    {
        target = GameObject.Find(targetName);
    }

    void FixedUpdate()
    {
        Vector3 start = transform.position;
        Vector3 end = target.transform.position;

        // 自身とターゲットを赤い線で繋ぐ
        Debug.DrawLine(start, end, Color.red);
    }
}

「Sphere」「Cube」「Capsule」の3つのオブジェクトを作成し、「Sphere」と「Cube」にスクリプトをアタッチしました。

インスペクタービューから、targetNameに別のオブジェクトの名前を指定しています。

実行するとオブジェクト間にラインが描画されました。

FixedUpdateに記述しているのでオブジェクトを動かすとラインも一緒に動きます。

さいごに

今回はデバッグ関連のメソッドから「Debug.DrawLine」を紹介しました。

上手く使いこなして、効率よくデバッグ作業を行えるようにしたいです。

参考サイト

コメント

タイトルとURLをコピーしました