This commit is contained in:
2026-06-24 17:43:37 +09:00
parent 24f5f729e4
commit 122d59b0f5
2297 changed files with 517608 additions and 605 deletions

View File

@@ -0,0 +1,82 @@
using UnityEngine;
using UnityEngine.Events;
public class RaftHealth : MonoBehaviour
{
[Header("Health")]
[SerializeField] private int maxHealth = 100;
[SerializeField] private int currentHealth = 100;
[Header("Options")]
[SerializeField] private bool resetHealthOnStart = true;
[Header("Events")]
public UnityEvent<int, int> onHealthChanged;
public UnityEvent onDead;
public int MaxHealth => maxHealth;
public int CurrentHealth => currentHealth;
public bool IsDead => currentHealth <= 0;
private void Start()
{
if (resetHealthOnStart)
{
ResetHealth();
}
}
public void ResetHealth()
{
currentHealth = maxHealth;
currentHealth = Mathf.Clamp(currentHealth, 0, maxHealth);
Debug.Log($"[RaftHealth] 체력 초기화: {currentHealth}/{maxHealth}");
onHealthChanged?.Invoke(currentHealth, maxHealth);
}
public void TakeDamage(int damage)
{
if (damage <= 0)
return;
if (IsDead)
return;
currentHealth -= damage;
currentHealth = Mathf.Clamp(currentHealth, 0, maxHealth);
Debug.Log($"[RaftHealth] 데미지 {damage} 받음. 현재 체력: {currentHealth}/{maxHealth}");
onHealthChanged?.Invoke(currentHealth, maxHealth);
if (currentHealth <= 0)
{
Die();
}
}
public void Heal(int amount)
{
if (amount <= 0)
return;
if (IsDead)
return;
currentHealth += amount;
currentHealth = Mathf.Clamp(currentHealth, 0, maxHealth);
Debug.Log($"[RaftHealth] 회복 {amount}. 현재 체력: {currentHealth}/{maxHealth}");
onHealthChanged?.Invoke(currentHealth, maxHealth);
}
private void Die()
{
Debug.Log("[RaftHealth] 체력이 0이 되었습니다. 뗏목 실패 처리.");
onDead?.Invoke();
}
}