테스트를 위해 캐릭터 데미지 메서드 debug 기능으로 임시 추가
This commit is contained in:
@@ -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<Animator>();
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user