using UnityEngine; [RequireComponent(typeof(Collider2D))] public class Enemy : MonoBehaviour, IDamageable { [Header("Stats")] [SerializeField] private int _maxHealth = 30; [Header("Hit Feedback")] [SerializeField] private float _hitFlashDuration = 0.1f; [SerializeField] private Color _hitFlashColor = Color.red; private int _currentHealth; private SpriteRenderer _spriteRenderer; private Color _originalColor; private float _flashTimer; private void Awake() { _currentHealth = _maxHealth; _spriteRenderer = GetComponentInChildren(); if (_spriteRenderer != null) _originalColor = _spriteRenderer.color; } private void Update() { if (_flashTimer > 0f) { _flashTimer -= Time.deltaTime; if (_flashTimer <= 0f && _spriteRenderer != null) _spriteRenderer.color = _originalColor; } } public void TakeDamage(int amount) { if (_currentHealth <= 0) return; _currentHealth -= amount; Debug.Log($"{name} 피격: -{amount} (HP: {_currentHealth}/{_maxHealth})"); if (_spriteRenderer != null) { _spriteRenderer.color = _hitFlashColor; _flashTimer = _hitFlashDuration; } if (_currentHealth <= 0) Die(); } private void Die() { Debug.Log($"{name} 사망"); Destroy(gameObject); } }