플레이어 체력 자연 회복 기능 추가

전투 상태 감지 기능
player stat으로 관리 가능
This commit is contained in:
2026-02-25 21:09:19 +09:00
parent a27a59d176
commit d066290607
4 changed files with 107 additions and 2 deletions

View File

@@ -19,6 +19,12 @@ namespace Northbound
[SerializeField] private float baseSight = 10f;
[SerializeField] private float baseAttackRange = 2f;
[Header("Health Regeneration")]
[Tooltip("초당 체력 회복량")]
[SerializeField] private float baseHpRegen = 2f;
[Tooltip("전투 종료 후 회복 시작까지의 대기 시간 (초)")]
[SerializeField] private float baseHpRegenDelay = 5f;
private PlayerUpgradeManager _upgradeManager;
private void Awake()
@@ -129,6 +135,25 @@ namespace Northbound
return baseAttackRange + bonus;
}
/// <summary>
/// 초당 체력 회복량 반환
/// </summary>
public float GetHpRegen()
{
float bonus = CalculateStatBonus("player_hp_regen");
return baseHpRegen + bonus;
}
/// <summary>
/// 전투 종료 후 회복 시작 대기 시간 반환 (초)
/// </summary>
public float GetHpRegenDelay()
{
float bonus = CalculateStatBonus("player_hp_regen_delay");
// delay는 보통 줄어드는 것이 좋으므로 음수 bonus는 감소로 처리
return Mathf.Max(1f, baseHpRegenDelay + bonus);
}
#region Base Stat Setters (/)
public void SetBaseMaxHp(int value) => baseMaxHp = value;
@@ -138,6 +163,8 @@ namespace Northbound
public void SetBaseMoveSpeed(float value) => baseMoveSpeed = value;
public void SetBaseSight(float value) => baseSight = value;
public void SetBaseAttackRange(float value) => baseAttackRange = value;
public void SetBaseHpRegen(float value) => baseHpRegen = value;
public void SetBaseHpRegenDelay(float value) => baseHpRegenDelay = value;
#endregion
@@ -153,7 +180,9 @@ namespace Northbound
$" Manpower: {GetManpower()} (기본: {baseManpower})\n" +
$" Move Speed: {GetMoveSpeed()} (기본: {baseMoveSpeed})\n" +
$" Sight: {GetSight()} (기본: {baseSight})\n" +
$" Attack Range: {GetAttackRange()} (기본: {baseAttackRange})");
$" Attack Range: {GetAttackRange()} (기본: {baseAttackRange})\n" +
$" HP Regen: {GetHpRegen():F1}/s (기본: {baseHpRegen})\n" +
$" HP Regen Delay: {GetHpRegenDelay():F1}s (기본: {baseHpRegenDelay})");
if (_upgradeManager != null)
{