/// <summary> /// Shows a notification if we are on a speed streak. /// </summary> public void ShowNotificationIfOnSpeedStreak() { float speed = playerControl.GetSpeed(); if (speed > 50f && !shown50Streak) { hud.ShowNotification(Color.white, "50 Speed Streak!"); AudioManager.instance.Play(SoundNames.SPEED_STREAK); shown50Streak = true; } if (speed > 100f && !shown100Streak) { hud.ShowNotification(Color.white, "100 Speed Streak!"); AudioManager.instance.Play(SoundNames.SPEED_STREAK); shown100Streak = true; } if (playerControl.HasReachedMaxSpeed() && !shownMaxSpeedStreak) { hud.ShowNotification(Color.white, "Max Speed!"); AudioManager.instance.Play(SoundNames.SPEED_STREAK); shownMaxSpeedStreak = true; } }
private void OnCollisionEnter(Collision other) { switch (other.gameObject.tag) { case Tags.OBSTACLE: if (IsGodMode()) { achievementManager.UnlockAchievement(AchievementIds.FLY_THROUGH_OBSTACLE_WHEN_INVINCIBLE); return; } dead = true; GameObject e = Instantiate(explosion) as GameObject; e.transform.SetPosition(new Vector3(transform.position.x, 0.6f, transform.position.z)); int topSpeed = playerControl.GetSpeed(); int finalScore = playerScore.GetFinalScore(); int bonusScore = playerScore.GetBonusScore(); int distanceScore = playerScore.GetDistanceScore(); Destroy(e, 3f); playerControl.StopMoving(); playerModel.SetActive(false); hud.SetNewHighscoreText(""); gameHUD.SetActive(false); audioManager.Play(SoundNames.PLAYER_DEATH); audioManager.Pause(SoundNames.SHIP_ENGINE); shopManager.AddCash(finalScore); scoreboard.Show(); scoreboard.AnimateDistanceScore(distanceScore); scoreboard.AnimateBonusScore(bonusScore); scoreboard.AnimateTopSpeed(topSpeed); scoreboard.AnimateFinalScore(finalScore); bool newScore = highscoreManager.SaveLocalHighscore(finalScore); bool newDistance = highscoreManager.SaveDistanceHighscore(distanceScore); if (newScore || newDistance) { hud.SetNewHighscoreText(Ui.NEW_HIGHSCORE); audioManager.Play(SoundNames.NEW_HIGHSCORE); } // Now update achievements achievementManager.ProgressAchievement(AchievementIds.DISTANCE_FURTHER_THAN_1000, 1000, distanceScore); achievementManager.ProgressAchievement(AchievementIds.DISTANCE_FURTHER_THAN_10000, 10000, distanceScore); achievementManager.ProgressAchievement(AchievementIds.DISTANCE_FURTHER_THAN_50000, 50000, distanceScore); achievementManager.ProgressAchievement(AchievementIds.POINTS_OVER_FIVE_MILLION, 5000000, finalScore); achievementManager.ProgressAchievement(AchievementIds.POINTS_OVER_HALF_MILLION, 500000, finalScore); achievementManager.ProgressAchievement(AchievementIds.POINTS_OVER_MILLION, 1000000, finalScore); achievementManager.UnlockAchievement(AchievementIds.DIE); StartCoroutine(RestartLevelRoutine()); break; default: // Nothing to do! break; } }