using System.Collections; using System.Collections.Generic; using UnityEngine; public class Damageable : MonoBehaviour { // ONLY FOR DEBUG USE [SerializeField] private bool selfDamage = false; Animator animator; [SerializeField] private int _maxHealth = 100; [SerializeField] private int _health = 100; [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 { if (value > MaxHealth) { Debug.Log("Warum?"); _health = MaxHealth; } else { _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; } } if (selfDamage) { Hit(10); } } public void Hit(int damage) { if (IsAlive && !isInvincible) { Health -= damage; isInvincible = true; CharacterEvents.characterDamaged.Invoke(gameObject, damage); } } }