Gizmos.DrawFrustumの使い方

環境

Unity2022.2.14f1

概要

ビューフラスタム(視錐台)を表示するデバッグ機能の使い方

コード

private void OnDrawGizmos()
{
    Gizmos.color = Color.cyan;
    Gizmos.matrix = Matrix4x4.TRS(_camera.transform.position, _camera.transform.rotation, new Vector3(_camera.aspect, 1.0f, 1.0f));

    Gizmos.DrawFrustum(Vector3.zero, _camera.fieldOfView, _camera.farClipPlane, _camera.nearClipPlane, 1.0f);

    // 指定距離のクリップ面のサイズ
    float height = _cameraDistance * Mathf.Tan(_camera.fieldOfView * 0.5f * Mathf.Deg2Rad) * 2.0f;
    Gizmos.DrawCube(Vector3.forward * _cameraDistance, new Vector3(height * _camera.aspect, height, 0.1f));

    // クリップ面の高さから距離を求める
    float distance = height * 0.5f / Mathf.Tan(_camera.fieldOfView * 0.5f * Mathf.Deg2Rad);
    Gizmos.DrawLine(Vector3.zero, Vector3.forward * distance);
}