From d3948bc577ea3fdff7306f130490b67096ea09a7 Mon Sep 17 00:00:00 2001 From: Sehyeon Date: Fri, 25 Apr 2025 15:59:57 +0900 Subject: [PATCH] =?UTF-8?q?DEG-108=20[Fix]=20=EA=B3=B5=EA=B2=A9=20?= =?UTF-8?q?=EC=A0=9C=ED=95=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assets/JAY/Scripts/PlayerController.cs | 3 ++- Assets/KSH/DungeonLogic.cs | 4 ++++ Assets/Scripts/Character/CharacterBase.cs | 3 +++ 3 files changed, 9 insertions(+), 1 deletion(-) 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);