using UnityEngine; using UnityEngine.Events; using System; public class HealthComponent : MonoBehaviour { [SerializeField] float startHealth = 100; public float currentHealth { get; private set; } public static event Action OnHealthChangeAtPos; public float StartHealth => startHealth; public UnityEvent OnHealthZero; public UnityEvent OnHealthChange; public UnityEvent OnHealthChange2; public UnityEvent OnHealthChange3; void Awake() { currentHealth = startHealth; } public void TakeDamage(float damage) { OnHealthChange?.Invoke(currentHealth, currentHealth - damage); OnHealthChange2?.Invoke(currentHealth - damage); OnHealthChange3.Invoke(); OnHealthChangeAtPos?.Invoke(transform.position, currentHealth - damage); currentHealth -= damage; currentHealth = (int) Mathf.Clamp(currentHealth, 0f, Mathf.Infinity); if (currentHealth == 0) OnHealthZero?.Invoke(); } public void SimpleKill() { CameraController.instance.ShakeCamera(5,1); Destroy(gameObject); } }