/// <summary> /// Funktion, wird von Unity mehrmals pro Frame aufgerufen. /// </summary> private void FixedUpdate() { if (!GlobalDataHandler.PlayerAtCtrlPoint()) { _inputs = Vector3.zero; _inputs.z = IsPlayerOnTrack() ? 1 : 0; // Erhöhe die Spielergeschwindigkeit beim Erreichen eines Meilensteins if (!GlobalDataHandler.GetActualSceneName().Contains("Tutorial") && GlobalDataHandler.GetPlayerPosition() >= GlobalDataHandler.GetNextMilestone()) { EventManager.IncreaseSpeedAndMilestone(); } //Beende das Spiel, wenn der Spieler von der Strecke fällt if (!_isGrounded && _body.transform.position.y < Gulf) { EventManager.GameEnd(); } //Aktualisiere die Punktzahl basierend auf der zurückgelegten Distanz int delta = (int)(_body.transform.position.z - _pastDistance); ScoreHandler.IncreasePlayerScore(delta); _pastDistance = (int)_body.transform.position.z; } if (!GlobalDataHandler.GetGameModus()) { return; } //Berechne die Geschwindigkeit des Spielers switch (GlobalDataHandler.GetRunMode()) { case RunMode.Faster: GlobalDataHandler.SetPlayerspeed(GlobalDataHandler.GetSpeed() * 2); break; case RunMode.Normal: GlobalDataHandler.SetPlayerspeed(GlobalDataHandler.GetSpeed()); break; case RunMode.Slower: GlobalDataHandler.SetPlayerspeed(GlobalDataHandler.GetSpeed() / 2); break; case RunMode.Idle: GlobalDataHandler.SetPlayerspeed(0); break; } //Berechne die neue Position des Spielers _body.position += _inputs * GlobalDataHandler.GetPlayerspeed() * Time.fixedDeltaTime; }