Menu
CoddyTech

Steuern

Lektion 2 von 14 im Kurs Unity-Spiel: 3D-Snake von Coddy.

Die Schlange dreht sich mit den Pfeiltasten oder WASD. Die Kamera blickt von der vorderen Kante aus auf das Spielfeld, daher verläuft „nach oben“ auf dem Bildschirm entlang +z, Vector3.forward, und „nach unten“ ist Vector3.back. Vector3.up zeigt zum Himmel: Ein Kopf, der sich in diese Richtung bewegt, würde vom Spielfeld abheben.

Eine Drehung erfolgt einmal pro Tastendruck. Lies die Tasten daher mit wasPressedThisFrame aus dem Input System aus. Der Tastendruck ändert nur direction. Step() bewegt den Kopf weiterhin beim nächsten Tick, sodass die Schlange ihren Rhythmus beibehält. Ein Rover, der sich bei gedrückter Taste D nach rechts auf dem Bildschirm bewegt:

Keyboard keyboard = Keyboard.current;
if (keyboard != null && keyboard.dKey.wasPressedThisFrame)
{
    heading = Vector3.right;
}

Das Input System verwendet bei der Tastatur keine Achsen: Ein Pfeil und sein Buchstabe sind zwei Tasten, die mit || verknüpft werden. Keyboard.current ist auf einem Gerät ohne Tastatur null. Lies den Wert daher einmal am Anfang aus und prüfe ihn.

challenge icon

Aufgabe

Einfach
  1. Füge using UnityEngine.InputSystem; zu Snake hinzu.
  2. Lies am Anfang von Update() Keyboard.current aus. Ein Druck auf die Pfeiltaste nach oben oder W setzt direction auf Vector3.forward; die Pfeiltaste nach unten oder S auf Vector3.back; die Pfeiltaste nach links oder A auf Vector3.left; die Pfeiltaste nach rechts oder D auf Vector3.right.
  3. Lass Step() unverändert: Der Kopf dreht sich beim nächsten Tick.

Drücke Play, klicke auf das Spiel und steuere die Schlange. Drücke anschließend Check.

Probier es selbst

using UnityEngine;

public class Snake : MonoBehaviour
{
    public float tick = 0.15f;   // Sekunden zwischen zwei Schritten
    private float timer;
    private Vector3 direction = Vector3.right;

    void Update()
    {
        timer += Time.deltaTime;
        if (timer >= tick)
        {
            timer -= tick;
            Step();
        }
    }

    void Step()
    {
        transform.position += direction;
    }
}
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