Menu
CoddyTech

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.

challenge icon

Aufgabe

Einfach

Der Kopf ist ein grüner Würfel auf der Zelle (-3, 0, 0). Snake hat tick, 0.15 Sekunden, und direction, Vector3.right.

  1. Füge ein private float timer; hinzu.
  2. Zähle in Update() den Timer um Time.deltaTime hoch. Wenn er tick erreicht, ziehe tick davon ab und rufe Step() auf.
  3. Bewege den Kopf in Step() eine Zelle entlang direction.

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
    }
}
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Unity-Spiel: 3D-Snake