Eingaben behandeln
Reagieren Sie auf Tasten und Maus.
Eingaben behandeln ist eine kostenlose Lua Academy-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Lua Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Lua Academy-Kurs umfasst insgesamt 4 Lektionen.
Zwei Möglichkeiten, Eingaben zu lesen
LÖVE bietet zwei Eingabestile. Beim Polling wird in jedem Frame gefragt: „Ist diese Taste gerade gedrückt?“ Das eignet sich ideal für kontinuierliche Aktionen wie Bewegung.
Events sind Callbacks, die genau einmal ausgelöst werden, wenn etwas passiert, etwa bei love.keypressed. Sie eignen sich ideal für einmalige Aktionen wie Springen oder Schießen.
Tastatur abfragen
love.keyboard.isDown(key) gibt true zurück, solange eine Taste gedrückt gehalten wird. Rufen Sie die Funktion innerhalb von love.update auf, um eine gleichmäßige, kontinuierliche Reaktion zu erhalten.
Da die Abfrage in jedem Frame erfolgt, wird die Aktion fortgesetzt, solange die Taste gehalten wird. Das eignet sich besonders gut, um eine Spielfigur zu bewegen.
function love.update(dt)
if love.keyboard.isDown('right') then
player.x = player.x + player.speed * dt
end
endMehrere Tasten prüfen
love.keyboard.isDown akzeptiert mehrere Tasten gleichzeitig und gibt true zurück, wenn eine davon gedrückt gehalten wird. Das ist praktisch für alternative Tastenbelegungen.
Sie können auch mehrere separate Abfragen verketten, um jede Richtung unabhängig zu behandeln und eine vollständige Bewegung in vier Richtungen zu ermöglichen.
function love.update(dt)
if love.keyboard.isDown('a', 'left') then
player.x = player.x - player.speed * dt
end
if love.keyboard.isDown('d', 'right') then
player.x = player.x + player.speed * dt
end
endDas keypressed-Ereignis
love.keypressed(key) wird genau einmal in dem Moment ausgelöst, in dem eine Taste gedrückt wird. Verwenden Sie es für Aktionen, die sich beim Gedrückthalten nicht wiederholen sollen, etwa Springen oder Pausieren.
Die Engine übergibt den Tastennamen als Zeichenkette. Vergleichen Sie ihn daher mit Namen wie 'space' oder 'escape'.
function love.keypressed(key)
if key == 'space' then
player.jumping = true
end
endBeenden mit Escape
Ein häufig verwendetes Muster ist, das Spiel zu schließen, wenn die Spielerin oder der Spieler Escape drückt. love.event.quit beendet die Engine ordnungsgemäß.
Da keypressed einmal pro Tastendruck ausgelöst wird, verhindert dieses Muster versehentliche wiederholte Auslösungen beim Gedrückthalten der Taste.
function love.keypressed(key)
if key == 'escape' then
love.event.quit()
end
endkeyreleased
love.keyreleased(key) wird einmal ausgelöst, wenn eine Taste losgelassen wird. Wenn Sie es mit keypressed kombinieren, können Sie den gedrückten Zustand selbst verfolgen.
Das ist für Auflademechaniken nützlich: Beginnen Sie beim Drücken mit dem Aufladen und lösen Sie die Aktion beim Loslassen aus, wobei Sie messen, wie lange die Taste gedrückt war.
function love.keypressed(key)
if key == 'space' then chargeStart = love.timer.getTime() end
end
function love.keyreleased(key)
if key == 'space' then power = love.timer.getTime() - chargeStart end
endMausposition
love.mouse.getPosition gibt die aktuelle x- und y-Position des Cursors innerhalb von love.update oder love.draw zurück. Sie können auch getX und getY separat verwenden.
Die Koordinaten entsprechen dem Zeichenbereich: Der Ursprung liegt oben links und der y-Wert nimmt nach unten zu.
function love.update(dt)
local mx, my = love.mouse.getPosition()
crosshair.x, crosshair.y = mx, my
endMaustasten
Fragen Sie den Zustand von Tasten mit love.mouse.isDown(1) ab. Dabei steht 1 für die linke, 2 für die rechte und 3 für die mittlere Maustaste.
Für einzelne Klicks verwenden Sie das Ereignis love.mousepressed(x, y, button). Es wird einmal ausgelöst und liefert Ihnen die Klickkoordinaten direkt.
function love.mousepressed(x, y, button)
if button == 1 then
spawnAt(x, y)
end
endTexteingabe
Für die Texteingabe liefert love.textinput(text) das tatsächliche Zeichen unter Berücksichtigung von Tastaturbelegung und Modifikatortasten. Für die Erstellung von Textfeldern ist das besser geeignet als keypressed.
Verwenden Sie zusätzlich keypressed, um Sondertasten wie Rücktaste und Eingabetaste zu verarbeiten, die textinput nicht sendet.
function love.textinput(t)
inputBuffer = inputBuffer .. t
endPolling und Ereignisse kombinieren
In echten Spielen werden beide Stile kombiniert: Bewegungs-Tasten werden in jedem Frame innerhalb von love.update abgefragt, während einmalige Aktionen in Event-Callbacks ausgeführt werden.
Die Wahl des passenden Stils verhindert Fehler. Würde ein Sprung in update abgefragt, würde er in jedem Frame ausgelöst, in dem die Taste gedrückt bleibt. Ein Ereignis löst ihn dagegen wie vorgesehen nur einmal aus.
function love.update(dt)
if love.keyboard.isDown('left') then player.x = player.x - 200*dt end
end
function love.keypressed(key)
if key == 'up' then jump() end
endGrundlagen zu Gamepads
LÖVE unterstützt über die Joystick-API auch Controller. Mit love.joystickpressed und isGamepadDown eines Joysticks können Sie Tasten abfragen.
Analogsticks liefern über getGamepadAxis Werte von -1 bis 1. Damit können Sie die Bewegung wie bei einer Tastaturabfrage mit dt gleichmäßig skalieren.
function love.update(dt)
if joystick then
local ax = joystick:getGamepadAxis('leftx')
player.x = player.x + ax * player.speed * dt
end
endKurzer Test
Testen Sie Ihr Verständnis der Eingabeverarbeitung in LÖVE.
Zusammenfassung
Die Eingabe in LÖVE umfasst zwei Varianten: Fragen Sie mit love.keyboard.isDown und love.mouse.isDown kontinuierliche Aktionen ab und reagieren Sie bei einmaligen Aktionen auf Event-Callbacks wie love.keypressed und love.mousepressed.
Maus-, Text- und Gamepad-APIs ergänzen die Möglichkeiten. Mit dem passenden Stil bleiben die Steuerung reaktionsschnell und das Spiel frei von Fehlern.
Häufig gestellte Fragen
Ist die Lektion „Eingaben behandeln“ kostenlos?
Ja — der vollständige Text von „Eingaben behandeln“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Lua Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Lua Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Eingaben behandeln“?
Reagieren Sie auf Tasten und Maus. Du übst Lua Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Lua Academy zu starten?
Keine Vorkenntnisse erforderlich. Lua Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.
Wie lange dauert die Lektion „Eingaben behandeln“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Lua Academy-Lektion Code schreiben und ausführen?
Ja. Jede Lua Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Die LOVE-Game-Loop
- Formen und Bilder zeichnen
- Eingaben behandeln
- Bewegung und Kollisionen