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に記述しているのでオブジェクトを動かすとラインも一緒に動きます。
【Unity】Debug.DrawLineのライン描画テスト pic.twitter.com/yMdKtPLvzV
— ばにら (@vaniiiirava) June 14, 2023
さいごに
今回はデバッグ関連のメソッドから「Debug.DrawLine」を紹介しました。
上手く使いこなして、効率よくデバッグ作業を行えるようにしたいです。
コメント