Beispiel #1
0
        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;
        }
Beispiel #3
0
        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);
        }