using System.Collections; using UnityEngine; public class PlayerHealth : MonoBehaviour { public int maxHealth = 3; [HideInInspector] public int currentHealth; public int InvincibilityTime; private bool invincibility = false; [SerializeField] private Sprite[] damageImages; [HideInInspector] public Vector2 resetPoint; public HealthUI HealthUI; private SpriteRenderer spriteRenderer; // Start is called once before the first execution of Update after the MonoBehaviour is created void Start() { resetPoint = new Vector2(gameObject.transform.position.x, gameObject.transform.position.y); currentHealth = maxHealth; HealthUI.SetMaxHearts(maxHealth); spriteRenderer = GetComponent(); } private void OnTriggerEnter2D(Collider2D collision) { if (collision.CompareTag("Enemy")) { if (invincibility == false) { TakeDamage(1); } } } public void TakeDamage(int damage) { currentHealth -= damage; HealthUI.UpdateHearts(currentHealth); StartCoroutine(FlashRed()); if (currentHealth <= 0) { transform.position = resetPoint; currentHealth = maxHealth; HealthUI.SetMaxHearts(maxHealth); } GetComponent().sprite = damageImages[maxHealth - currentHealth]; } private IEnumerator FlashRed() { float i = 0; invincibility = true; while (i < InvincibilityTime) { spriteRenderer.color = Color.red; yield return new WaitForSeconds(0.25f); spriteRenderer.color = Color.white; yield return new WaitForSeconds(0.25f); i += 0.5f; } invincibility = false; } }