Beispiel #1
0
    void Update()
    {
        if (Input.GetKeyDown(KeyCode.R))
        {
            ScoreInfo.ResetHighScore();
        }

        //	カメラが写してる左端から右端まで距離のランダム
        randomX = Random.Range(-cameraX, cameraX);
        //	カメラが写してる上から下までの距離のランダム
        randomY = Random.Range(-cameraY, cameraY);

        //	スコア加算
        if (isScoreCount)
        {
            scoreCount++;
            isScoreCount = false;
        }

        // フェーズ1か2の時の処理
        if (gamePhase == GamePhase.Phase1 ||
            gamePhase == GamePhase.Phase2)
        {
            // 一回だけ呼ぶようにするif文
            if (isAddMeteo)
            {
                isAddMeteoCount = true;
                isAddMeteo      = false;
                // 隕石を一回の生成で複数個生成するときの処理
                for (int i = 0; i < addMeteos; i++)
                {
                    // 隕石を生成
                    GameObject meteoClorn = Instantiate(addMeteoObj);
                    // 生成された隕石をエネミーリストに追加する
                    enemyList.Add(meteoClorn);
                }
                adMeteoNum = 0;
            }


            if (isAddMeteoCount)
            {
                // 一回だけ呼ぶようにするif文
                if (i == 0)
                {
                    i++;
                    StartCoroutine(addMeteoCount());
                }
            }
        }

        // フェーズが4の時の処理
        if (gamePhase == GamePhase.Phase4)
        {
            // 一回だけ呼ぶようにするif文
            if (isAddUfo)
            {
                isAddUFOCount = true;
                isAddUfo      = false;
                // UFOを一回の生成で複数個生成する処理
                for (int i = 0; i < addUFOs; i++)
                {
                    // UFOを生成
                    GameObject ufoClorn = Instantiate(addUFOObj, new Vector3(0, -10, 0), Quaternion.identity);
                    // 生成されたUFOをエネミーリストに追加
                    enemyList.Add(ufoClorn);
                }
                addUFONum = 0;
            }

            if (isAddUFOCount)
            {
                // 一回だけ呼ぶようにするif文
                if (j == 0)
                {
                    j++;
                    StartCoroutine(addUFOCount());
                }
            }
        }

        // ゲームステートごとの処理
        switch (gameStates)
        {
        // ステートがタイトルの場合
        case GameStates.Title:
            // 地球のHPのUIを非表示にする
            earth_HP.SetActive(false);
            // タイトルのBGMを流す
            BgmManeger.Instance.Changed(0);
            // スタートのフラグがたったら
            if (IsStart)
            {
                // タイトルのUIをフェードアウトさせる
                titleImage.GetComponent <FadeScript>().FadeOut();
                // ゲームステートをスタートに変える
                gameStates = GameStates.Start;
            }
            break;

        // ステートがスタートの場合
        case GameStates.Start:
            // タイマーを起動する
            Timer();
            // 地球のHPのUIを表示させる
            earth_HP.SetActive(true);

            // 経過時間がフェーズを変える時間以上になったら
            if (time >= changeFeseTime)
            {
                // その時にフェーズが5だった場合は抜ける
                if (gamePhase == GamePhase.Phase5)
                {
                    break;
                }
                // ゲームフェーズを速報を出すフェーズに変える
                gamePhase = GamePhase.PromptReport;
                isReport  = false;
                // 経過時間の初期化
                time = 0;
            }

            // ゲームステートがスタート中のゲームフェーズごとの処理
            switch (gamePhase)
            {
            // ゲームフェーズが速報を出すフェーズだった場合
            case GamePhase.PromptReport:
                // isReportがtrueじゃなかったら
                if (!isReport)
                {
                    // EndPromptReportのコルーチンをスタート
                    StartCoroutine(EndPromptReport());
                    isReport = true;
                }
                break;

            // ゲームフェーズが1の場合
            case GamePhase.Phase1:
                //  初期隕石を3つ生成
                if (firstMeteo < 3)
                {
                    firstMeteo++;
                    // 隕石を生成
                    GameObject meteoClorn = Instantiate(addMeteoObj);
                    // 生成した隕石をエネミーリストに追加
                    enemyList.Add(meteoClorn);
                }
                break;

            case GamePhase.Phase2:
                break;

            case GamePhase.Phase3:
                break;

            // ゲームフェーズが4の場合
            case GamePhase.Phase4:
                if (timeCount >= 5 && ufoPopCount < 3)
                {
                    ufoPopCount++;
                    // UFOを生成する処理
                    GameObject ufoClorn = Instantiate(addUFOObj, new Vector3(0, -10, 0), Quaternion.identity);
                    // 生成したUFOをエネミーリストに追加
                    enemyList.Add(ufoClorn);
                    isAddUfo = true;
                }
                break;

            // ゲームフェーズが5の場合
            case GamePhase.Phase5:
                // 一回だけ呼ぶif文
                if (marsPop == 0)
                {
                    marsPop++;
                    // 火星の出現
                    bosMars.gameObject.SetActive(true);
                    // 火星のHPのUIを表示
                    kasei_HP.SetActive(true);
                    // エネミーリストに火星を追加
                    enemyList.Add(bosMars);
                }
                boosSteage = true;
                break;
            }
            break;

        // ゲームステートがエンドの場合
        case GameStates.End:
            // ゲームクリアかゲームオーバの文字が入るのテキストを表示
            gameOverText.SetActive(true);
            // chengeResultのコルーチンをスタートする
            StartCoroutine(chengeResult());
            break;

        //  ゲームステートがリザルトの場合
        case GameStates.Result:
            // 何かしらの入力があるとタイトルに戻る
            if (Input.anyKeyDown)
            {
                ScoreInfo.Score = new Score();
                SceneManager.LoadScene("MainScene");
            }
            // 一回だけ呼ぶif文
            if (onceDispScore < 1)
            {
                SGraph.StartGraph();
                onceDispScore++;
                // 評価を表示させる
                ResultController.Instance.Param();
                // スコアを表示させる
                dispScore();
            }
            break;
        }
    }