using UnityEngine; // ============================================================================ // IDamageable // ---------------------------------------------------------------------------- // "데미지를 받을 수 있는 무언가"를 표현하는 인터페이스. // AttackHitbox가 트리거에 들어온 콜라이더에서 이 인터페이스를 찾아 TakeDamage 호출. // Enemy, Player 등 어떤 GameObject든 이 인터페이스만 구현하면 같은 공격 시스템으로 피격 가능. // ---------------------------------------------------------------------------- // 매개변수: // amount — 데미지 양 // hitVelocity — 넉백 속도 (피해자에게 적용할 vx/vy) // hitReactionAnimationState — 피격 모션 애니메이션 State 이름 (null 가능) // hitTargetPosition — 피격 시 위치 보정 목표 (null이면 보정 안 함) // correctHitTargetY — 위 위치 보정에서 Y도 보정할지 (false면 X만) // hitPositionSolidMask — 위치 보정 시 끼이지 않게 검사할 솔리드 레이어 // hitPositionCorrectionDuration — 위치 보정 보간 시간 (0이면 즉시 스냅) // ============================================================================ public interface IDamageable { void TakeDamage(int amount, Vector2 hitVelocity = default, string hitReactionAnimationState = null, Vector2? hitTargetPosition = null, bool correctHitTargetY = false, int hitPositionSolidMask = 0, float hitPositionCorrectionDuration = 0f); }