Menu
CoddyTech

Achsen

Teil des Abschnitts Unity-Scripting: Grundlagen der Unity-Journey von Coddy. Lektion 20 von 85.

Input.GetAxis("Horizontal") wandelt die Pfeiltasten links und rechts (sowie A und D) in eine Zahl von -1 bis 1 um: -1 für links, 1 für rechts, 0 für keine Taste. Input.GetAxis("Vertical") macht dasselbe für die Pfeiltasten unten und oben (S und W). Ein Aufruf ersetzt zwei ifs, und ein Gamepad-Stick steuert dieselben Achsen ganz ohne zusätzlichen Code.

Die Zahl springt nicht. Mit den Standardeinstellungen von Unity bewegt sie sich mit 3 pro Sekunde auf ihren Zielwert zu. Daher dauert es nach dem Drücken eine Drittelsekunde, bis sie 1 erreicht, und nach dem Loslassen noch einmal eine Drittelsekunde, bis sie wieder auf 0 fällt. Durch dieses sanfte Einsetzen beschleunigt dieser Hovercraft allmählich und gleitet bis zum Stillstand:

public float speed = 5f;

void Update()
{
    float h = Input.GetAxis("Horizontal");
    transform.position += new Vector3(h * speed * Time.deltaTime, 0, 0);
}

Input.GetAxisRaw("Horizontal") überspringt das sanfte Einsetzen: Der Wert ist in jedem Frame genau -1, 0 oder 1, sodass die Bewegung sofort beginnt und stoppt. Verwende GetAxis für Dinge, die sich schwerfällig anfühlen sollen, und GetAxisRaw für präzise Steuerung. Wenn beide Pfeiltasten gedrückt sind, liefern beide Methoden 0, weil sich die beiden Richtungen aufheben. (In einem Unity-6-Projekt gilt die Einstellung „Active Input Handling“ aus „Mit den Tasten steuern“ auch für Achsen.)

challenge icon

Aufgabe

Einfach

Lass den Rover präzise fahren, ohne sanftes Abbremsen.

  1. Lies in Update() float h = Input.GetAxisRaw("Horizontal"); und float v = Input.GetAxisRaw("Vertical"); aus.
  2. Addiere new Vector3(h * speed * Time.deltaTime, 0, v * speed * Time.deltaTime) zu transform.position.

Klicke auf „Spielen“, klicke ins Spiel und fahre mit den Pfeiltasten oder WASD: Der Rover fährt sofort los und hält sofort an. Klicke anschließend auf „Prüfen“.

Probier es selbst

using UnityEngine;

public class Rover : MonoBehaviour
{
    public float speed = 4f;

    void Update()
    {
        // Horizontal steuert entlang der x-Achse, Vertical entlang der z-Achse, ohne sanftes Beschleunigen oder Abbremsen.
    }
}

Alle Lektionen in Unity-Scripting: Grundlagen

Übe selbstständig: Unity-Playground