23 lines
632 B
C#
23 lines
632 B
C#
using UnityEngine;
|
|
using System;
|
|
|
|
public class Core : MonoBehaviour, IDamageable
|
|
{
|
|
[SerializeField] private float maxHealth = 100f;
|
|
private float _currentHealth;
|
|
|
|
// 체력이 변경될 때 UI 등에 알리기 위한 이벤트 (Observer 패턴)
|
|
public static event Action<float> OnHealthChanged;
|
|
public static event Action OnCoreDestroyed;
|
|
|
|
void Awake() => _currentHealth = maxHealth;
|
|
|
|
public void TakeDamage(float amount)
|
|
{
|
|
_currentHealth -= amount;
|
|
OnHealthChanged?.Invoke(_currentHealth / maxHealth);
|
|
|
|
if (_currentHealth <= 0)
|
|
OnCoreDestroyed?.Invoke();
|
|
}
|
|
} |