2026-05-21 보스추가

This commit is contained in:
2026-05-21 12:12:17 +09:00
parent 7d87b6e007
commit 0f35455ad7
22 changed files with 821 additions and 81 deletions

View File

@@ -1,19 +1,6 @@
using System;
using UnityEngine;
// ============================================================================
// Health
// ----------------------------------------------------------------------------
// 순수한 HP 데이터 컴포넌트. 시각 효과/넉백/사망 처리는 일절 안 함.
// Enemy, Player 등 어떤 GameObject든 Health 컴포넌트만 추가하면 HP 관리 가능.
//
// 일반적 사용 흐름:
// 1) Enemy/Player가 IDamageable.TakeDamage 받음
// 2) 시각 효과(flash) + 넉백 처리
// 3) 마지막에 _health.TakeDamage(amount) 호출
// 4) Health가 HP 감소 + OnHealthChanged 이벤트 발화 → HP바 등 UI 자동 갱신
// 5) HP가 0 되면 OnDied 이벤트 발화 → Enemy가 HandleDeath()로 Destroy 등 처리
// ============================================================================
public class Health : MonoBehaviour
{
[SerializeField] private int _maxHealth = 30;
@@ -26,8 +13,8 @@ public class Health : MonoBehaviour
public bool IsDead => _currentHealth <= 0;
// ─── 외부 구독용 이벤트 ──────────────────────────────────────────────
// OnHealthChanged: (current, max). HP바, 데미지 숫자 표시 등에 사용.
// OnDied: 사망 순간 1회만 발화. Enemy.HandleDeath에서 구독.
// OnHealthChanged: (current, max). 데미지 숫자 표시 등에 사용.
// OnDied: 사망 순간 1회만 발화.
public event Action<int, int> OnHealthChanged;
public event Action OnDied;
@@ -50,7 +37,7 @@ public void TakeDamage(int amount)
OnDied?.Invoke();
}
// 회복. 죽은 상태에서는 회복 안 됨 (부활 로직은 별도로 만들어야 함).
// 회복
public void Heal(int amount)
{
if (amount <= 0 || IsDead) return;