diff --git a/Assets/JAY/Scripts/PlayerController.cs b/Assets/JAY/Scripts/PlayerController.cs index 0dd9e277..ca3fceb2 100644 --- a/Assets/JAY/Scripts/PlayerController.cs +++ b/Assets/JAY/Scripts/PlayerController.cs @@ -89,7 +89,8 @@ public class PlayerController : CharacterBase, IObserver } // 공격 입력 처리 - if (Input.GetKeyDown(KeyCode.X) && (_currentAction == null || !_currentAction.IsActive)) { + if (Input.GetKeyDown(KeyCode.X) && (_currentAction == null || !_currentAction.IsActive) + && (CurrentState != PlayerState.Win && CurrentState != PlayerState.Dead)) { Debug.Log("X 버튼 Down 됨"); StartAttackAction(); } diff --git a/Assets/KSH/DungeonLogic.cs b/Assets/KSH/DungeonLogic.cs index a1db7b27..e5b66d8f 100644 --- a/Assets/KSH/DungeonLogic.cs +++ b/Assets/KSH/DungeonLogic.cs @@ -41,6 +41,8 @@ public class DungeonLogic : MonoBehaviour { if (isFailed || isCompleted) return; // 어느 한 쪽 사망시 더이상 피격 X + // TODO: 플레이어 피격 효과음 + var result = _dungeonPanelController.SetPlayerHealth(); if (!result) // 하트 모두 소모 { @@ -52,6 +54,8 @@ public class DungeonLogic : MonoBehaviour { if (isFailed || isCompleted) return; + // TODO: 에너미 피격 효과음 + _dungeonPanelController.SetBossHealthBar(enemy.currentHP); } diff --git a/Assets/Scripts/Character/CharacterBase.cs b/Assets/Scripts/Character/CharacterBase.cs index fdf5a623..b0f4e2ea 100644 --- a/Assets/Scripts/Character/CharacterBase.cs +++ b/Assets/Scripts/Character/CharacterBase.cs @@ -28,6 +28,8 @@ public abstract class CharacterBase : MonoBehaviour public virtual void TakeDamage(float damage) { + if (currentHP <= 0) return; + float actualDamage = Mathf.Max(0, damage - defensePower); currentHP -= Mathf.RoundToInt(actualDamage); Debug.Log($"{characterName}이 {actualDamage}의 피해를 입었습니다. 현재 체력: {currentHP}"); @@ -35,6 +37,7 @@ public abstract class CharacterBase : MonoBehaviour if (currentHP <= 0) { Die(); + return; } OnGetHit?.Invoke(this);