using System.Collections; using System.Collections.Generic; using UnityEngine; public class Damageable : MonoBehaviour { Animator animator; [SerializeField] private int _maxHealth = 100; [SerializeField] private int _health; [SerializeField] private bool _isAlive = true; [SerializeField] private bool isInvincible = false; private float timeSinceHit = 0f; public float invincibilityTime = 0.25f; public int MaxHealth { get { return _maxHealth; } set { _maxHealth = value; } } public int Health { get { return _health; } set { _health = value; if (value <= 0) { IsAlive = false; } } } public bool IsAlive { get { return _isAlive; } private set { _isAlive = value; animator.SetBool(AnimationStrings.isAlive, value); } } private void Awake() { Health = MaxHealth; animator = GetComponent(); } private void Update() { if (isInvincible) { if (timeSinceHit > invincibilityTime) { isInvincible = false; timeSinceHit = 0; } else { timeSinceHit += Time.deltaTime; } } } public void Hit(int damage) { if (IsAlive && !isInvincible) { Health -= damage; isInvincible = true; } } }