示例#1
0
    public void RestartGame()
    {
        if (gameState == GameStates.gameover)
        {
            Camera.main.GetComponent <AudioSource>().clip = gameAudioClip;
            //Camera.main.GetComponent<AudioSource>().Stop();
            Camera.main.GetComponent <AudioSource>().Play();
            speed = startSpeed;
            score = 0;
            level = 0;
            BackgroundTintController backgroundTintController = new BackgroundTintController();
            backgroundTintController.refreshColor();

            canvasManager.UpdateScore(score);
            CameraAnim.SetTrigger("play");
            gameOverAnim.SetTrigger("playReverse");

            player     = Instantiate(playerPrefab);
            boostTrail = GameObject.Find("boostTrail");
            boostTrail.SetActive(false);

            GameObject[] powerUp = GameObject.FindGameObjectsWithTag("PowerUp");
            for (int i = 0; i < powerUp.Length; i++)
            {
                if (powerUp[i] != null)
                {
                    Destroy(powerUp[i]);
                }
            }

            ObstacleManager o = GameObject.Find("ObstacleManager").GetComponent <ObstacleManager>();
            o.StopObstacleManager();
            GameObject[] obstacles = GameObject.FindGameObjectsWithTag("Obstacle");
            for (int i = 0; i < obstacles.Length; i++)
            {
                Destroy(obstacles[i]);
            }
            o.StartObstacleManager();
            gameState = GameStates.playing;
        }
    }
示例#2
0
    public void StartGame()
    {
        if (gameState != GameStates.playing)
        {
            Camera.main.GetComponent <AudioSource>().clip = gameAudioClip;
            Camera.main.GetComponent <AudioSource>().Play();
            speed = startSpeed;
            score = 0;
            level = 0;
            BackgroundTintController backgroundTintController = new BackgroundTintController();
            backgroundTintController.refreshColor();
            CameraAnim.SetTrigger("play");
            homeMenuAnim.SetTrigger("play");
            player = Instantiate(playerPrefab);
            ObstacleManager o = GameObject.Find("ObstacleManager").GetComponent <ObstacleManager>();
            o.StartObstacleManager();
            gameState = GameStates.playing;

            boostTrail = GameObject.Find("boostTrail");
            DisableBoostTrail();
        }
    }
示例#3
0
    IEnumerator ObstaclesUpdater()
    {
        while (true)
        {
            if (GameManager.gameState == GameManager.GameStates.playing && levelShift == false)
            {//on some ongoing level
                for (int i = 0; i < numberOfObstacles; i++)
                {
                    if (obstacles[i].transform.position.y <= -6)
                    {
                        obstaclesCount++;
                        obstacles[i].SetActive(true);
                        passableChildIndex = Random.Range(0, 3);
                        resetPosition(i);
                        resetSprites(i, passableChildIndex);
                        resetPassableChild(i, passableChildIndex);
                        resetVelocities(i);

                        if (powerUpSpawnOnCountOf == obstaclesCount)
                        {//spawn powerUp
                            PowerUpManager p = GameObject.Find("PowerUpManager").GetComponent <PowerUpManager>();
                            p.SpawnPowerUp(new Vector2(0,
                                                       calculateMaxY() + gapBetweenObstacles / 2 +
                                                       Random.Range(0, maxExtraGapBetweebObstacles) / 2));
                        }

                        if (levelChangeOnCountOf == obstaclesCount)
                        {//start level shifting
                            levelShift = true;
                            break;
                        }
                    }
                }
            }
            if (GameManager.gameState == GameManager.GameStates.playing && levelShift == true)
            {//when level is changing
             //calculate total number of obstacles which are below the screen:
                int obsBelowScreenCount = 0;
                for (int i = 0; i < numberOfObstacles; i++)
                {
                    if (obstacles[i].transform.position.y <= -6)
                    {
                        obsBelowScreenCount++;
                    }
                }
                if (obsBelowScreenCount == numberOfObstacles)                     //all the obstacles have passed
                {
                    GameManager.level = (GameManager.level + 1) % spriteRowCount; //goto next level
                    float speedBeforeWait = GameManager.speed;

                    backgroundTintController.removeColor();
                    yield return(new WaitForSeconds(2.5f));

                    backgroundTintController.refreshColor();
                    yield return(new WaitForSeconds(2.5f));

                    GameManager.speed = speedBeforeWait;
                    for (int j = 0; j < numberOfObstacles; j++)
                    {//reset all obstacles
                        obstacles[j].transform.position = new Vector2(0, 20 + j * gapBetweenObstacles);
                        passableChildIndex = Random.Range(0, 3);
                        obstacles[j].SetActive(true);
                        resetSprites(j, passableChildIndex);
                        resetPassableChild(j, passableChildIndex);
                        resetVelocities(j);
                    }
                    obstaclesCount += numberOfObstacles;
                    levelShift      = false;

                    levelChangeOnCountOf += levelChangeOnCountOf_pb + Random.Range(15, 20) * (GameManager.level + 1);
                    powerUpSpawnOnCountOf = levelChangeOnCountOf / 2;
                }
            }
            yield return(new WaitForSeconds(.5f));
        }
    }