Der Läufer
Teil des Abschnitts Unity-Scripting: Grundlagen der Unity-Journey von Coddy. Lektion 75 von 85.
In diesem Kapitel entwickelst du ein kleines Spiel: Dodge the Blocks. Du steuerst einen Läufer entlang einer Bahn, während Blöcke vom Himmel fallen, und eine einzige 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, deren Beseitigung, der Treffer und eine Punktzahl.
Das erste Feature ist eine Steuerung, die auf der Bahn 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 oberhalb liegt, und andernfalls den Wert selbst. Es kommt darauf an, an welcher Stelle du Clamp verwendest. Diese Ladeanzeige füllt sich, solange die Leertaste gedrückt wird, leert sich, wenn sie nicht gedrückt wird, und verlässt niemals 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);
}Clamp kommt nach der Änderung. Würdest du zuerst Clamp anwenden, könnte der Wert am Ende des Frames um einen Schritt über dem Grenzwert liegen, und der Balken würde anhand dieses Werts gezeichnet. Mathf.Clamp gibt außerdem eine neue Zahl zurück, anstatt die übergebene Variable zu ändern. Weise das Ergebnis also wieder zu.
Aufgabe
MittelStarte „Dodge the Blocks“: Steuere den Läufer entlang seiner Spur.
- Kopiere in
Update()transform.positioninVector3 pund addiereInput.GetAxisRaw("Horizontal") * speed * Time.deltaTimezup.x. Die rohe Achse bewegt sich sofort mit voller Geschwindigkeit. - Setze
p.x = Mathf.Clamp(p.x, -laneEdge, laneEdge);und danntransform.position = p;.
Drücke „Spielen“, klicke auf das Spiel und laufe bis zu beiden Enden: Der Läufer hält an den Rändern an. Drücke anschließend „Prüfen“.
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 x bewegen und x dann innerhalb der Spur halten
}
}
Alle Lektionen in Unity-Scripting: Grundlagen
1C#-Grundlagen in Unity
Hallo, UnityVariablenDezimalzahlen brauchen ein fText in der KonsoleVariablen, die sich etwas merkenIf und ElseZahlen vergleichenRückblick: Münzsammler7Schleifen und Methoden
Wiederholen mit forSchleifen in SchleifenEine Methode schreibenMethoden mit RückgabewertArraysRückblick: Treppe10Dinge finden
Nach Namen suchenTagsNach Typ suchenReferenzen schlagen SuchenUnitys NullRückblick: nächste Münze13Projekt: Weiche den Blöcken aus
Der LäuferBlöcke vom Himmel2Bring es in Bewegung
Platziere den WürfelBewege ihn in jedem FrameDrehe ihn jede SekundeSteuere mit den TastenRückblick: Fahre den Würfel5Vektoren
Vektoren addierenRichtungenLokaler und globaler RaumDiagonale GeschwindigkeitAbstand zwischen ObjektenVector3 ist eine StrukturRückblick: Drohnenpilot8GameObjects und Komponenten
Referenzen im InspectorEine Komponente abrufenFehlende KomponentenEine Komponente hinzufügenRequireComponentEin- und AusblendenRückblick: Lichtschalter11Prefabs und Erzeugen von Instanzen
Prefabs und InstantiateNach Zeitintervall erzeugenIn einem Raster erzeugenListen von ObjektenDas Neueste zurücknehmenZerstörenZufälliges ErzeugenRückblick: Feuerwerk14Abschließende Herausforderungen
MünzmagnetDie Straße überquerenStraßenverkehrTurmbauerLanden oder verfehlen3Der Inspector
Inspector-FelderSerializeFieldFließkommazahlen und MathfInspector-AttributeRückblick: Aufzug6Transformationen und Hierarchie
Eltern und KinderHisse die FlaggeSkalierungDinge anschauenAuf einen Punkt zubewegenRückblick: Mond in Umlaufbahn9Projekt: Fang den Stern
Der FängerEin fallender Stern12Der Lebenszyklus eines Skripts
Awake und StartUpdate und LateUpdateOnEnable und OnDisableDie Reihenfolge im LebenszyklusRückblick: Lifecycle LoggerÜbe selbstständig: Unity-Playground