TigerProject/Assets/Scripts/Entity.cs

50 lines
1.0 KiB
C#
Raw Normal View History

2026-01-20 10:06:03 +00:00
using UnityEngine;
using UnityEngine.Events;
public class Entity : MonoBehaviour
{
public float maxHealth { get; private set; }
public float currentHealth { get; private set; }
public float attackDamage { get; private set; }
public UnityEvent OnDeath;
public UnityEvent<float> OnTakeDamage;
[SerializeField] private EntityData data;
void Awake()
{
maxHealth = data.maxHealth;
currentHealth = data.maxHealth;
attackDamage = data.attackDamage;
}
public virtual void TakeDamge(float damage)
2026-01-20 10:06:03 +00:00
{
currentHealth -= damage;
OnTakeDamage?.Invoke(damage);
if (currentHealth <= 0)
{
currentHealth = 0;
Die();
}
}
protected virtual void Die()
{
Destroy(gameObject);
OnDeath?.Invoke();
}
public void Heal(float heal)
{
if (heal < 0) return;
currentHealth += heal;
if(currentHealth > maxHealth)
{
currentHealth = maxHealth;
}
}
}