Skip to content

Instantly share code, notes, and snippets.

@unity3dcollege
Last active December 29, 2016 06:41
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save unity3dcollege/310d48e1d7d2f4d72c8f5803922cb8d6 to your computer and use it in GitHub Desktop.
Save unity3dcollege/310d48e1d7d2f4d72c8f5803922cb8d6 to your computer and use it in GitHub Desktop.
using System;
using UnityEngine;
public class Health : MonoBehaviour
{
[SerializeField] private int startingHealth = 100;
private int currentHealth;
public event Action<float> OnHPPctChanged = delegate { };
public event Action OnDied = delegate { };
private void Start()
{
currentHealth = startingHealth;
}
public float CurrentHpPct
{
get { return (float) currentHealth / (float) startingHealth; }
}
public void TakeDamage(int amount)
{
if (amount <= 0)
throw new ArgumentOutOfRangeException("Invalid Damage amount specified: " + amount);
currentHealth -= amount;
OnHPPctChanged(CurrentHpPct);
if (CurrentHpPct <= 0)
Die();
}
private void Die()
{
OnDied();
GameObject.Destroy(this.gameObject);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment