Zeitrennen
Teil des Abschnitts Echte Spiele entwickeln der Unity-Journey von Coddy. Lektion 55 von 56.
Ein Zeitrennen durch einen Garten. Der Läufer startet an einem Ende mit zehn Sekunden auf der Uhr und muss das weiße Ziel am anderen Ende umrunden, dabei eine Hecke umgehen, bevor die Zeit abläuft. Goldene Uhren auf dem Weg bringen jeweils ein paar zusätzliche Sekunden. Wenn die Zeit fast abgelaufen ist, wird die Uhr rot; wenn sie abgelaufen ist, beginnt die Strecke von vorn. Erreiche rechtzeitig das Ziel, und das Spiel wechselt zur Finish-Szene.
Schreibe zwei Skripte: Runner für den Läufer mit einem CharacterController und Race für das Race-Objekt.
Aufgabe
SchwerDer Build enthält zwei Szenen: Track und Finish. Auf der Strecke sind die Uhren mit Clock und das Ziel mit Goal getaggt; beide sind Trigger.
Im Inspector weist du Runner speed (6), gravity (-9.81) und race (das Race-Skript) zu.
- Die Move-Aktion des Projekts bewegt den Runner mit
speedEinheiten pro Sekunde: rechts und links entlang der x-Achse, nach oben und unten entlang der z-Achse. Er fällt mitgravityund bewegt sich nur mitcontroller.Move, daher hält ihn die Hecke auf. - Wenn der Runner eine Uhr berührt, wird sie verbraucht und die Rennzeit erhält ihren Bonus. Wenn er das Ziel berührt, ist das Rennen beendet.
Im Inspector weist du Race timeLimit (10), bonus (3) und timeText zu.
- Die verbleibende Zeit beginnt bei
timeLimitund nimmt entsprechend der tatsächlich verstrichenen Zeit ab.timeTextzeigt sie mit einer Dezimalstelle an, alsTime: 7.4, in Weiß und in Rot (Color.red), wenn weniger als 3 Sekunden verbleiben. - Jede Uhr addiert
bonusSekunden. - Wenn die Zeit 0 erreicht, protokolliere
Time's up!und lade die Strecke erneut vom Anfang an. - Wenn das Rennen rechtzeitig beendet wird, protokolliere die verbleibende Zeit als
Finished with 4.2 s leftund lade die Finish-Szene.
Drücke Play, besiege die Uhr und klicke dann auf Check.
Probier es selbst
using UnityEngine;
using UnityEngine.SceneManagement;
using TMPro;
public class Race : MonoBehaviour
{
public float timeLimit = 10f;
public float bonus = 3f;
public TMP_Text timeText;
}
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Echte Spiele entwickeln
1Text auf dem Bildschirm
Canvas und TextPunktestand anzeigenZahlen formatierenEin Countdown-TimerRückblick: Tachometer4Szenen und Level
Eine Szene ladenDas Level neu startenNächstes LevelZwischen Szenen beibehaltenRückblick: Levelauswahl10Projekt: 3D-Plattformer
Der ParcoursBewegliche Plattformen2Buttons und Bildschirme
Buttons und onClickLambdasVerknüpfungen im InspectorPanels ein- und ausblendenGesundheitsbalkenRückblick: Upgrade-Shop5Speichern mit PlayerPrefs
Eine Zahl speichernMit einem Standardwert ladenHöchstpunktzahlEinstellungen speichernRückblick: Münzen auf der Bank