Tastatur und Maus
Teil des Abschnitts Echte Spiele entwickeln der Unity-Journey von Coddy. Lektion 44 von 56.
Das Input System gibt jedem Gerät ein Objekt. Keyboard.current ist die Tastatur, und jede Taste darauf ist ein Steuerelement mit einem Namen: spaceKey, aKey, upArrowKey oder Keyboard.current[Key.Space] für eine beliebige Taste anhand ihres Key-Werts. Mouse.current ist die Maus mit leftButton, rightButton und position. isPressed eines Steuerelements ist in jedem Frame true, in dem es gedrückt gehalten wird, so wie es bei Input.GetKey der Fall war. Dieses U-Boot taucht mit den Pfeiltasten und steigt auf, und seine Suchscheinwerfer leuchten, solange die Maustaste gedrückt gehalten wird:
using UnityEngine;
using UnityEngine.InputSystem;
public class Submarine : MonoBehaviour
{
public float diveSpeed = 2f;
public Light searchlight;
void Update()
{
Keyboard keyboard = Keyboard.current;
if (keyboard == null) return; // keine Tastatur angeschlossen
if (keyboard.downArrowKey.isPressed)
transform.position += Vector3.down * diveSpeed * Time.deltaTime;
if (keyboard.upArrowKey.isPressed)
transform.position += Vector3.up * diveSpeed * Time.deltaTime;
searchlight.enabled = Mouse.current != null && Mouse.current.leftButton.isPressed;
}
}current ist das zuletzt verwendete Gerät und ist null, wenn keines vorhanden ist: Ein Telefon oder eine Konsole hat möglicherweise keine Tastatur, und die Nullprüfungen verhindern, dass das Skript dort einen Fehler auslöst. Die Tastatur hat keine Achsen, daher sind die Pfeiltaste nach unten und S zwei separate Tasten: Ein U-Boot, das auch mit S tauchen soll, prüft keyboard.downArrowKey.isPressed || keyboard.sKey.isPressed. Mouse.current.position.ReadValue() liefert die Zeigerposition als Vector2 in Bildschirmpixeln, gemessen von der unteren linken Ecke aus, wie Input.mousePosition.
Aufgabe
MittelSteuere den Heißluftballon mit dem Input System. Sein Skript hat drift (2), rise (3), sink (1), groundY (2) und flame, die Flamme des Brenners unter dem Ballon.
- Solange die rechte Pfeiltaste oder D gedrückt gehalten wird, driftet der Ballon mit
driftEinheiten pro Sekunde nach rechts (entlang +x); solange die linke Pfeiltaste oder A gedrückt gehalten wird, driftet er nach links. - Der Brenner ist eingeschaltet, solange die Leertaste oder die linke Maustaste gedrückt gehalten wird. Zeige
flamenur an, wenn er eingeschaltet ist. - Bei eingeschaltetem Brenner steigt der Ballon mit
riseEinheiten pro Sekunde. Ist er ausgeschaltet, sinkt er mitsinkEinheiten pro Sekunde und niemals untergroundY.
Verwende Keyboard.current und Mouse.current. Dieses Projekt ist wie ein neues Unity 6-Projekt eingerichtet (Active Input Handling: Input System Package), daher löst die Klasse Input hier eine InvalidOperationException aus. Drücke Play und steuere den Ballon, dann Check.
Probier es selbst
using UnityEngine;
using UnityEngine.InputSystem;
public class Balloon : MonoBehaviour
{
public float drift = 2f;
public float rise = 3f;
public float sink = 1f;
public float groundY = 2f;
public GameObject flame;
void Update()
{
// Steuere mit den Pfeiltasten oder A und D, zünde den Brenner mit Space oder der Maus
}
}
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Echte Spiele entwickeln
1Text auf dem Bildschirm
Canvas und TextPunktestand anzeigenZahlen formatierenEin Countdown-TimerRückblick: Tachometer4Szenen und Level
Eine Szene ladenDas Level neu startenNächstes LevelZwischen Szenen beibehaltenRückblick: Levelauswahl10Projekt: 3D-Plattformer
Der ParcoursBewegliche Plattformen2Buttons und Bildschirme
Buttons und onClickLambdasVerknüpfungen im InspectorPanels ein- und ausblendenGesundheitsbalkenRückblick: Upgrade-Shop5Speichern mit PlayerPrefs
Eine Zahl speichernMit einem Standardwert ladenHöchstpunktzahlEinstellungen speichernRückblick: Münzen auf der Bank3Der Spielmanager
Ein Skript steuert das SpielDas SingletonSpielzuständeZum Zustand wechselnRückblick: Rundenmanager6Projekt: Endlos-Runner
Drei SpurenHindernisse voraus9Das neue Eingabesystem
Zwei EingabesystemeTastatur und MausIn diesem Frame gedrücktEingabeaktionenRückblick: Eingabewechsel