private IEnumerator ImmortalRoutine() { Health.SetImmortal(true); SpriteRenderer spriteRenderer = GetComponent <SpriteRenderer>(); if (spriteRenderer == null) { throw new System.Exception("No renderer found from Player Spaceship object!"); } float timer = 0f; Color color = spriteRenderer.color; while (timer < _immortalTime) { timer += _blinkInterval; // A short way to write if-else. color.a = color.a == 1 ? 0 : 1; spriteRenderer.color = color; yield return(new WaitForSeconds(_blinkInterval)); } color.a = 1; spriteRenderer.color = color; Health.SetImmortal(false); }
// Gives blink effect and disables hitbox for a while after respawn private IEnumerator Invincibility(float time) { float timer = 0.0f; Health.SetImmortal(true); while (timer < time) { for (int a = 0; a < _respawnColors.Length; a++) { timer += _blinkTime; //color.a = color.a == 1 ? 0 : 1; _renderer.color = _respawnColors[a]; yield return(new WaitForSeconds(_blinkTime)); } } // Resets normal sprite renderer & collider states Health.SetImmortal(false); _renderer.color = _normalColor; }
private IEnumerator ImmortalRoutine() { Health.SetImmortal(true); SpriteRenderer spriteRenderer = GetComponent <SpriteRenderer>(); if (spriteRenderer == null) { throw new System.Exception("No renderer found from PlayerSpaceship object!"); } float timer = 0; Color color = spriteRenderer.color; while (timer < _immortalTime) { timer += _blinkInterval; color = spriteRenderer.color; // These two below are the same thing (if-else). color.a = color.a == 1 ? 0 : 1; //if (color.a == 1) //{ // color.a = 0; //} //else //{ // color.a = 1; //} spriteRenderer.color = color; yield return(new WaitForSeconds(_blinkInterval)); } color = spriteRenderer.color; color.a = 1; spriteRenderer.color = color; Health.SetImmortal(false); }