Achsen
Teil des Abschnitts Grundlagen des Scripting in Unity der Unity-Journey von Coddy. Lektion 13 von 67.
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 der beiden Richtungen. Input.GetAxis("Vertical") macht dasselbe für die Pfeiltasten nach unten und oben (S und W). Ein Aufruf ersetzt zwei ifs, und ein Gamepad-Stick steuert dieselben Achsen 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 eine weitere Drittelsekunde, bis sie wieder auf 0 fällt. Durch dieses sanfte Abbremsen beschleunigt dieses Hovercraft behutsam und kommt allmählich 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 Abbremsen: In jedem Frame ist der Wert 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 Varianten 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.)
Aufgabe
EinfachDer Rover soll direkt reagieren, ohne Beschleunigung oder Abbremsen: Mit den Pfeiltasten (oder WASD) steuerst du ihn mit speed Einheiten pro Sekunde nach links und rechts entlang der x-Achse sowie nach oben und unten entlang der z-Achse. Er bewegt sich ab dem Moment, in dem eine Taste gedrückt wird, mit voller Geschwindigkeit und hält an, sobald die Taste losgelassen wird.
Drücke Play, klicke ins Spiel und steuere den Rover, dann drücke Check.
Probier es selbst
using UnityEngine;
public class Rover : MonoBehaviour
{
public float speed = 4f;
void Update()
{
// Horizontal bewegt sich entlang der x-Achse, Vertical entlang der z-Achse, ohne sanftes Beschleunigen oder Abbremsen.
}
}
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Grundlagen des Scripting in Unity
1Dein erstes Skript
Hallo, UnityPlatziere den WürfelBewege dich in jedem FrameDrehe dich jede SekundeSteuere mit den TastenRückblick: Steuere den Würfel4Vektoren
Vektoren addierenRichtungenLokaler und globaler RaumDiagonale GeschwindigkeitAbstand zwischen ObjektenVector3 ist ein StructRückblick: Drohnenpilot7Projekt: Fang den Stern
Der FängerEin fallender Stern10Der Lebenszyklus eines Skripts
Awake und StartUpdate und LateUpdateOnEnable und OnDisableDie Reihenfolge im LebenszyklusRückblick: Lifecycle Logger5Transformationen und Hierarchie
Eltern und KinderSkalierungDinge ansehenAuf einen Punkt zubewegenRückblick: Umlaufender Mond8Dinge finden
Nach Namen findenTagsNach Typ findenReferenzen schlagen FindUnitys NullRückblick: Nächste Münze11Projekt: Weiche den Blöcken aus
Der LäuferFallende Blöcke6GameObjects und Komponenten
Referenzen im InspectorEine Komponente abrufenFehlende KomponentenEine Komponente hinzufügenRequireComponentEin- und AusblendenRückblick: Lichtschalter