Degulleo3D/Assets/Scripts/Character/Enemy/BossPattern/HorizontalAoeController.cs
fiore 9c03bfd00a DEG-41 DEG-93 공격 패턴 및 애니메이션 조정
- 부채꼴 가로 베기
- 직선 횡 베기
- 근접 원형 공격
- 원거리 폭탄
2025-04-24 10:40:40 +09:00

52 lines
1.8 KiB
C#

using UnityEngine;
public class HorizontalAoeController : AoeControllerBase
{
private float slashAngle = 270f;
private int gizmoSegments = 20;
protected override void HitCheck()
{
var hits = Physics.OverlapSphere(transform.position, _data.radius, _data.targetLayer);
foreach (var hit in hits)
{
if (!hit.CompareTag("Player")) continue;
Vector3 dir = hit.transform.position - transform.position;
dir.y = 0;
float angleToForward = Vector3.Angle(transform.forward, dir);
if (angleToForward <= slashAngle * 0.5f)
{
Debug.Log($"{hit.name}이(가) 횡적 슬래시 데미지 범위에 있습니다.");
Debug.Log($"{hit.name}에게 {_data.damage} 데미지 적용");
// TODO: 실제 데미지 처리 로직 호출
}
}
}
private void OnDrawGizmosSelected()
{
// 부채꼴 형태 기즈모 드로잉
Gizmos.color = Color.red;
Vector3 origin = transform.position;
float halfAngle = slashAngle * 0.5f;
float step = slashAngle / gizmoSegments;
// 시작 포인트
Vector3 prevDir = Quaternion.AngleAxis(-halfAngle, Vector3.up) * transform.forward;
Vector3 prevPoint = origin + prevDir.normalized * _data.radius;
Gizmos.DrawLine(origin, prevPoint);
for (int i = 1; i <= gizmoSegments; i++)
{
float currentAngle = -halfAngle + step * i;
Vector3 currDir = Quaternion.AngleAxis(currentAngle, Vector3.up) * transform.forward;
Vector3 currPoint = origin + currDir.normalized * _data.radius;
Gizmos.DrawLine(prevPoint, currPoint);
prevPoint = currPoint;
}
// 마지막 라인
Gizmos.DrawLine(origin, prevPoint);
}
}