Das Spielbrett
Lektion 1 von 14 im Kurs Unity-Spiel: 3D-Snake von Coddy.
In diesem Kurs baust du Snake in 3D: eine Schlange aus Würfeln auf einem 15-mal-15-Spielfeld, von oben betrachtet. Sie bewegt sich jeweils um ein Feld, biegt mit den Pfeiltasten oder WASD ab, frisst Futter, wächst und stirbt, wenn sie gegen die Wände oder ihren eigenen Schwanz stößt. Zwei Skripte steuern das Spiel: Snake am Kopf und GameManager, das leer bleibt, bis im nächsten Kapitel das Futter hinzukommt.
Die Felder sind eine Einheit breit und auf ganzen Zahlen zentriert: x und z reichen von -7 bis 7, und jedes Feld liegt bei y 0. Die Schlange gleitet nie zwischen den Feldern. Sie springt bei einem Tick, einem festen Takt wie etwa 0.15 Sekunden, um ein ganzes Feld weiter und bleibt dazwischen stehen.
Ein Takt in Unity ist ein Timer: Addiere Time.deltaTime bei jedem Frame, und wenn der Timer das Intervall erreicht, führe eine Aktion aus und ziehe das Intervall ab. Dieses Leuchtfeuer blinkt einmal pro Sekunde:
public Light beacon;
public float interval = 1f;
private float timer;
void Update()
{
timer += Time.deltaTime;
if (timer >= interval)
{
timer -= interval;
beacon.enabled = !beacon.enabled;
}
}Wenn du das Intervall abziehst, anstatt den Timer auf 0 zurückzusetzen, bleibt der Teil eines Frames erhalten, der über das Intervall hinausging. So gerät der Takt nicht in Verzug.
Aufgabe
EinfachDer Kopf ist ein grüner Würfel auf der Zelle (-3, 0, 0). Snake hat tick, 0.15 Sekunden, und direction, Vector3.right.
- Füge ein
private float timer;hinzu. - Zähle in
Update()den Timer umTime.deltaTimehoch. Wenn ertickerreicht, ziehetickdavon ab und rufeStep()auf. - Bewege den Kopf in
Step()eine Zelle entlangdirection.
Drücke Play und beobachte, wie der Kopf nach rechts weitergeht. Vorerst verlässt er das Spielfeld: Die Wände kommen in Lektion 4. Drücke dann Check.
Probier es selbst
using UnityEngine;
public class Snake : MonoBehaviour
{
public float tick = 0.15f; // Sekunden zwischen zwei Schritten
private Vector3 direction = Vector3.right;
void Update()
{
// Alle tick Sekunden Step() einmal aufrufen
}
void Step()
{
// Den Kopf um eine Zelle in Richtung direction bewegen
}
}
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.