디버그 기능 제거
This commit is contained in:
@@ -0,0 +1,97 @@
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
using TMPro;
|
||||
|
||||
public class Enemy : MonoBehaviour
|
||||
{
|
||||
[Header("적 스탯 설정")]
|
||||
public string enemyName = "고블린 왕";
|
||||
public int hp = 30;
|
||||
public int maxHp = 30;
|
||||
public int attackPower = 2; // 플레이어를 공격할 때의 기본 데미지 수치
|
||||
|
||||
[Header("UI 연결")]
|
||||
public TextMeshProUGUI nameText; // 적 이름 표시 TMP
|
||||
public Image hpImage; // 적 체력바 이미지
|
||||
|
||||
private Animator animator;
|
||||
|
||||
private void Start()
|
||||
{
|
||||
maxHp = hp;
|
||||
|
||||
// 자식 오브젝트의 애니메이터(SPUM 리소스 구조)를 획득합니다.
|
||||
animator = GetComponentInChildren<Animator>();
|
||||
|
||||
// 적 캐릭터의 기본 방향을 플레이어를 바라보도록 좌측(스케일 양수)으로 정렬합니다.
|
||||
Vector3 initialScale = transform.localScale;
|
||||
initialScale.x = Mathf.Abs(initialScale.x);
|
||||
transform.localScale = initialScale;
|
||||
|
||||
// 시작 시 적 이름을 UI 텍스트에 연동합니다.
|
||||
if (nameText != null)
|
||||
{
|
||||
nameText.text = enemyName;
|
||||
}
|
||||
}
|
||||
|
||||
private void Update()
|
||||
{
|
||||
// 안전 조치: maxHp가 비정상(0 이하)이거나 현재 체력이 초과된 경우 자동 동기화
|
||||
if (maxHp <= 0 || hp > maxHp)
|
||||
{
|
||||
maxHp = hp;
|
||||
}
|
||||
|
||||
// 플레이어와 동일하게 Simple/Filled 이미지 방식 모두 가로가 정상 감축되도록 이중 연동합니다.
|
||||
if (hpImage != null && maxHp > 0)
|
||||
{
|
||||
float fillRatio = Mathf.Clamp01((float)hp / maxHp);
|
||||
hpImage.fillAmount = fillRatio;
|
||||
hpImage.rectTransform.localScale = new Vector3(fillRatio, 1f, 1f);
|
||||
}
|
||||
}
|
||||
|
||||
// 플레이어의 공격을 받아 데미지를 입는 메서드
|
||||
public void TakeDamage(int damage)
|
||||
{
|
||||
if (hp <= 0) return; // 이미 죽은 경우 무시
|
||||
|
||||
hp -= damage;
|
||||
if (hp < 0) hp = 0;
|
||||
|
||||
Debug.Log($"[Enemy] 적 {enemyName}이(가) {damage} 피해를 입었습니다. 현재 체력: {hp}/{maxHp}");
|
||||
|
||||
if (animator != null)
|
||||
{
|
||||
if (hp <= 0)
|
||||
{
|
||||
// SPUM 리소스 기준 사망(4_Death) 트리거 작동
|
||||
animator.SetTrigger("4_Death");
|
||||
Debug.Log($"[Enemy] 적 {enemyName}이(가) 사망하였습니다.");
|
||||
}
|
||||
else
|
||||
{
|
||||
// SPUM 리소스 기준 피격(3_Damaged) 트리거 작동
|
||||
animator.SetTrigger("3_Damaged");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 플레이어를 반격 공격하는 메서드
|
||||
public void Attack(Player player)
|
||||
{
|
||||
if (hp <= 0 || player == null) return;
|
||||
|
||||
Debug.Log($"[Enemy] 적 {enemyName}이(가) 플레이어를 공격합니다! (데미지: {attackPower})");
|
||||
|
||||
if (animator != null)
|
||||
{
|
||||
// SPUM 리소스 기준 공격(2_Attack) 트리거 작동
|
||||
animator.SetTrigger("2_Attack");
|
||||
}
|
||||
|
||||
// 플레이어 체력 차감 전송
|
||||
player.TakeDamage(attackPower, enemyName);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user