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; } }
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(); } }
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)); } }