예제 #1
0
    public override IEnumerator Use(CharacterBase sender, MainSystem sys)
    {
        yield return(EffectAnim.Aura(sender.Position));

        sys.HideMinimap();

        // 黒マスクで画面全体を暗くする
        var mask = (GameObject)GameObject.Instantiate(Resources.Load("Prefabs/Mask/black"), sender.Position, Quaternion.identity);

        mask.transform.localScale = new Vector3(10f, 15f, 1);

        float cameraZoomDelta = 0.65f;

        yield return(Anim.Par(sys,
                              () => sys.CameraZoomOut(cameraZoomDelta),
                              () => MaskFade(mask, 0, 0.5f)));

        yield return(Anim.Par(sys,
                              () => CAction.Quake(GameObject.Find(LayerName.Map), 1.4f),
                              () => EffectAnim.Skill(sender.Position)));

        yield return(new WaitForSeconds(0.3f));

        yield return(Anim.Par(sys,
                              () => sys.CameraZoomIn(cameraZoomDelta),
                              () => MaskFade(mask, 0.5f, 0)));

        GameObject.Destroy(mask);

        sys.ShowMinimap();

        var enemies     = sys.GetEnemies();
        var damageAnims = new List <DamageWait>();

        for (int i = 0; i < enemies.Length; i++)
        {
            damageAnims.Add(new DamageWait(enemies[i], 99, sys));
        }

        while (true)
        {
            bool finished = true;
            foreach (var d in damageAnims)
            {
                finished = finished && d.AnimationFinished;
            }

            if (finished)
            {
                break;
            }
            yield return(null);
        }
    }