Der Läufer
Teil des Abschnitts Grundlagen des Scripting in Unity der Unity-Journey von Coddy. Lektion 60 von 67.
In diesem Kapitel entwickelst du ein kleines Spiel: Dodge the Blocks. Du steuerst einen Läufer auf einer Spur, während Blöcke vom Himmel fallen, und eine Berührung beendet den Lauf. Das ganze Spiel besteht aus einem Skript, Runner, das in jeder Lektion um ein Feature erweitert wird: Steuerung, fallende Blöcke, Aufräumen, der Treffer und eine Punktzahl.
Das erste Feature ist eine Steuerung, die auf der Spur bleibt, mit Mathf.Clamp(value, min, max) aus Catch the Star: Es gibt min zurück, wenn der Wert unterhalb des Bereichs liegt, max, wenn er darüber liegt, und andernfalls den Wert selbst. Es kommt darauf an, an welcher Stelle du clampst. Diese Lademeter füllt sich, solange die Leertaste gedrückt gehalten wird, leert sich, wenn sie nicht gedrückt wird, und verlässt nie den Bereich von 0 bis 10:
[SerializeField] private float charge = 0f;
void Update()
{
if (Input.GetKey(KeyCode.Space))
{
charge += 4f * Time.deltaTime;
}
else
{
charge -= 2f * Time.deltaTime;
}
charge = Mathf.Clamp(charge, 0f, 10f);
transform.localScale = new Vector3(0.5f, charge, 0.5f);
}Der Clamp kommt nach der Änderung. Wird zuerst geclampt, könnte der Wert den Grenzwert am Ende des Frames um einen Schritt überschreiten, und der Balken würde anhand dieses Werts gezeichnet. Mathf.Clamp gibt außerdem eine neue Zahl zurück, statt die übergebene Variable zu ändern. Weise das Ergebnis also wieder zu.
Aufgabe
MittelStarte Dodge the Blocks mit dem Läufer. Im Inspector werden dem Skript Runner die Werte speed (6) und laneEdge (4) zugewiesen.
- Mit den Pfeiltasten nach links und rechts bewegst du den Läufer entlang der x-Achse mit
speedEinheiten pro Sekunde. - Sein x-Wert fällt nie unter
-laneEdgeund steigt nie überlaneEdge, sodass er auf der Spur bleibt.
Drücke Play, klicke ins Spiel und laufe zu beiden Enden der Spur, dann Check.
Probier es selbst
using UnityEngine;
public class Runner : MonoBehaviour
{
[SerializeField] private float speed = 6f;
[SerializeField] private float laneEdge = 4f;
void Update()
{
// Mit den Pfeiltasten entlang der x-Achse bewegen und dann x innerhalb der Fahrspur halten
}
}
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Grundlagen des Scripting in Unity
1Dein erstes Skript
Hallo, UnityPlatziere den WürfelBewege dich in jedem FrameDrehe dich jede SekundeSteuere mit den TastenRückblick: Steuere den Würfel4Vektoren
Vektoren addierenRichtungenLokaler und globaler RaumDiagonale GeschwindigkeitAbstand zwischen ObjektenVector3 ist ein StructRückblick: Drohnenpilot7Projekt: Fang den Stern
Der FängerEin fallender Stern10Der Lebenszyklus eines Skripts
Awake und StartUpdate und LateUpdateOnEnable und OnDisableDie Reihenfolge im LebenszyklusRückblick: Lifecycle Logger5Transformationen und Hierarchie
Eltern und KinderSkalierungDinge ansehenAuf einen Punkt zubewegenRückblick: Umlaufender Mond8Dinge finden
Nach Namen findenTagsNach Typ findenReferenzen schlagen FindUnitys NullRückblick: Nächste Münze11Projekt: Weiche den Blöcken aus
Der LäuferFallende Blöcke6GameObjects und Komponenten
Referenzen im InspectorEine Komponente abrufenFehlende KomponentenEine Komponente hinzufügenRequireComponentEin- und AusblendenRückblick: Lichtschalter