using UnityEngine;
namespace Colosseum.Debugging
{
///
/// 씬 뷰에서 캐릭터의 정면 방향을 화살표로 표시하는 Gizmo 유틸리티입니다.
///
public static class FacingDirectionGizmoUtility
{
///
/// 지정한 Transform의 정면 방향 화살표를 그립니다.
///
public static void DrawFacingArrow(Transform targetTransform, Color color, float length = 1.6f, float headLength = 0.35f, float headWidth = 0.22f, float heightOffset = 0.1f, float shaftThickness = 0.08f)
{
if (targetTransform == null)
return;
Vector3 origin = targetTransform.position + Vector3.up * heightOffset;
Vector3 forward = targetTransform.forward.normalized;
if (forward.sqrMagnitude <= 0.0001f)
return;
Vector3 tip = origin + forward * length;
Vector3 right = targetTransform.right.normalized;
Vector3 up = targetTransform.up.normalized;
Vector3 headBase = tip - forward * headLength;
Vector3 rightOffset = right * shaftThickness;
Vector3 upOffset = up * shaftThickness;
Gizmos.color = color;
Gizmos.DrawLine(origin, tip);
Gizmos.DrawLine(origin + rightOffset, tip + rightOffset);
Gizmos.DrawLine(origin - rightOffset, tip - rightOffset);
Gizmos.DrawLine(origin + upOffset, tip + upOffset);
Gizmos.DrawLine(origin - upOffset, tip - upOffset);
Gizmos.DrawLine(tip, headBase + right * headWidth);
Gizmos.DrawLine(tip, headBase - right * headWidth);
Gizmos.DrawLine(tip, headBase + up * headWidth * 0.7f);
Gizmos.DrawLine(tip, headBase - up * headWidth * 0.7f);
Gizmos.DrawSphere(origin, shaftThickness * 0.55f);
Gizmos.DrawSphere(tip, shaftThickness * 0.65f);
}
}
}