Пример #1
0
    /// <summary>
    /// 사망 코루틴입니다.
    /// </summary>
    IEnumerator CoroutineDead()
    {
        //
        for (int i = 0; i < _blinkCount1; ++i)
        {
            ToggleHighlighted();
            yield return(new WaitForSeconds(_blinkInterval1));
        }

        /*
         * //
         * for (int i = 0; i < _blinkCount2; ++i)
         * {
         *  ToggleHighlighted();
         *  yield return new WaitForSeconds(_blinkInterval2);
         * }
         */

        //
        StageManager stageManager = StageManager.Instance;

        stageManager.RequestStopBackgroundMusic();

        //
        EffectBossExplosionScript explosion = Instantiate
                                                  (_explosion, transform.position, transform.rotation);

        explosion.gameObject.SetActive(true);

        //
        ScreenFader fader = stageManager._fader;

        fader.fadeSpeed = 0.2f;
        fader.ChangeFadeTextureColor(1);
        fader.ChangeFadeTextureColor(new Color(1, 1, 1, 0), Color.white, 0.5f);
        fader.FadeOut();

        //
        while (ExplosionEnd() == false)
        {
            ToggleHighlighted();
            yield return(new WaitForSeconds(_blinkInterval2));
        }

        //
        AudioSource se = stageManager.BossClearExplosionSoundEffect;

        se.Play();

        //
        SpriteRenderer renderer = GetComponent <SpriteRenderer>();

        renderer.sprite = null;
        explosion.gameObject.SetActive(false);

        //
        fader.fadeSpeed = 1f;
        fader.FadeIn();
        while (fader.FadeInEnded == false || se.isPlaying)
        {
            yield return(false);
        }

        // 사망이 끝났습니다.
        fader.fadeSpeed = 3f;
        fader.ChangeFadeTextureColor(0);
        fader.ChangeFadeTextureColor(new Color(0, 0, 0, 0), Color.black, 0.95f);
        stageManager.RequestClearStage();
        yield break;
    }