육지도착

This commit is contained in:
2026-06-22 16:58:32 +09:00
parent f7a71e11d6
commit 74afff5be8
23 changed files with 1500 additions and 54 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();
}
}