New file |
| | |
| | | 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<Animator>(); |
| | | } |
| | | 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; |
| | | } |
| | | } |
| | | } |