public void applyDamageTo(float damage) { if (invunerable) { return; } GameObject hitParticle = Instantiate(this.hitParticle, transform.position, transform.rotation); var main = hitParticle.GetComponent <ParticleSystem>().main; main.startColor = new Color(1.0f, 0.0f, 0.0f, 1.0f); Destroy(hitParticle, hitParticle.GetComponent <ParticleSystem>().main.duration); Health -= damage; UnityUtils.RecursiveFind(transform, "HealthBar").GetComponent <ProgressBarBehaviour>().UpdateFill(Health / MaxHealth); if (Health <= 0) { KillSelf(); } else { transform.Find("Sprite").GetComponent <SpriteRenderer>().color = Color.red; StartCoroutine(UnityUtils.ChangeToDefaultColorAfterTime(colorModifier, 0.5f)); } }