Ejemplo n.º 1
0
    //戦闘
    IEnumerator CoBattle()
    {
        yield return(0);

        effectController.StartBattle();

        this.remacthDialog.SetActive(false);
        InitPlayer();
        InitEnemy();

        isEndBattle = false;

        //ルーレット待機開始
        roulette.Ready();

        TryOpenAchievement(AchievementData.Type.FirstBattle);

        while (!isEndBattle)
        {
            //ルーレットが始まるまで待機
            while (roulette.IsReady)
            {
                yield return(0);
            }

            //ルーレットが止まるまで待機
            while (!roulette.IsReady)
            {
                yield return(0);
            }

            //攻撃を実行
            Attack(roulette.SlotID);
            if (!isEndBattle)
            {
                //戦闘が次に進むのでライフを減らす
                playerData.CurrentLife = playerData.CurrentLife - 1;
                playerLifeGauge.SetLife(playerData.CurrentLife);
                if (playerData.CurrentLife <= 0)
                {                       //HP0になったので終了
                    isEndBattle = true;
                }
            }
        }

        //戦闘が終わったので、結果表示をする
        if (enemyData.IsDead)
        {
            //勝った場合
            effectController.GameWin();
            TryOpenDefactAchievement(enemyData.type);
            yield return(new WaitForSeconds(4.0f));

            //相手がラスボスだった場合
            if (IsGameComplete(enemyData))
            {
                Ending();
            }
            else
            {
                Back();
            }
        }
        else
        {
            //負けた場合
            effectController.GameLose();
            TryOpenAchievement(AchievementData.Type.GameOver);
            yield return(new WaitForSeconds(1.0f));

            //再戦を促すダイアログを表示
            this.remacthDialog.SetActive(true);
        }
    }