diff --git a/unity-client/Assets/Scripts/PlayerMove.cs b/unity-client/Assets/Scripts/PlayerMove.cs index dc10080..78a9f4c 100644 --- a/unity-client/Assets/Scripts/PlayerMove.cs +++ b/unity-client/Assets/Scripts/PlayerMove.cs @@ -29,6 +29,7 @@ public class PlayerMove : MonoBehaviour // 이동 관련 변수 [SerializeField] private float speed = 5f; [SerializeField] public int hp = 5; + private int maxHp; private bool isFacingRight = false; private int currentAnimationState = -1; @@ -54,10 +55,21 @@ public class PlayerMove : MonoBehaviour transform.localScale = initialScale; animator = GetComponentInChildren(); + maxHp = hp; } private void Update() { + if (hp <= 0) + { + if (animator != null) + { + animator.SetBool("1_Move", false); + } + + return; + } + InputContoller.UpdateInput(ref _inputs); // 좌우 방향 전환 (Flip) @@ -94,6 +106,13 @@ public class PlayerMove : MonoBehaviour private void Move() { if (rb == null) return; + + if (hp <= 0) + { + rb.linearVelocity = new Vector2(0f, rb.linearVelocity.y); + return; + } + rb.linearVelocity = new Vector2(_inputs.PlayerMove.x * speed, rb.linearVelocity.y); } @@ -104,4 +123,63 @@ public class PlayerMove : MonoBehaviour scale.x *= -1f; transform.localScale = scale; } + + // 데미지를 입는 메서드 + public void TakeDamage(int damage) + { + if (hp <= 0) return; // 이미 사망한 경우 제외 + + hp -= damage; + if (hp < 0) hp = 0; + + Debug.Log($"플레이어가 {damage} 데미지를 입었습니다. 현재 체력: {hp}"); + + if (animator != null) + { + if (hp <= 0) + { + animator.SetTrigger("4_Death"); + Debug.Log("플레이어가 사망했습니다."); + } + else + { + animator.SetTrigger("3_Damaged"); + } + } + } + + // 인스펙터 우클릭 메뉴에서 데미지를 테스트할 수 있는 기능 추가 + [ContextMenu("Debug/Take 5 Damage")] + public void DebugTake5Damage() + { + TakeDamage(5); + } + + [ContextMenu("Debug/Restore HP")] + public void DebugRestoreHP() + { + hp = maxHp; + if (animator != null) + { + animator.Rebind(); + animator.Update(0f); + } + Debug.Log($"플레이어 체력이 {hp}로 회복되었습니다."); + } + + // 임시 디버그용 화면 버튼 (게임 실행 시 화면 좌측 상단에 뜸) + private void OnGUI() + { + GUI.backgroundColor = Color.red; + if (GUI.Button(new Rect(10, 10, 180, 50), "Debug: Take 5 Damage")) + { + TakeDamage(5); + } + + GUI.backgroundColor = Color.green; + if (GUI.Button(new Rect(10, 70, 180, 50), "Debug: Restore HP")) + { + DebugRestoreHP(); + } + } } \ No newline at end of file