Gestire l'input
Reagisca ai tasti e al mouse.
Gestire l'input è una lezione Lua Academy gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Lua Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Lua Academy include 4 lezioni in totale.
Due modi per leggere l'input
LÖVE offre due modalità di input. Il polling chiede «il tasto è premuto in questo momento?» a ogni frame ed è ideale per azioni continue come il movimento.
Gli eventi sono callback che vengono eseguiti una sola volta quando accade qualcosa, come love.keypressed, e sono ideali per azioni singole come saltare o sparare.
Interrogare la tastiera
love.keyboard.isDown(key) restituisce true finché un tasto rimane premuto. Lo chiami all'interno di love.update per ottenere una risposta fluida e continua.
Poiché viene verificato a ogni frame, tenere premuto il tasto mantiene l'azione attiva. È la scelta naturale per muovere un giocatore.
function love.update(dt)
if love.keyboard.isDown('right') then
player.x = player.x + player.speed * dt
end
endControllare più tasti
love.keyboard.isDown accetta più tasti contemporaneamente e restituisce true se almeno uno di essi è premuto, il che è comodo per le associazioni alternative.
Può anche concatenare controlli separati per gestire ogni direzione indipendentemente e ottenere un movimento completo nelle quattro direzioni.
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
endL'evento keypressed
love.keypressed(key) viene eseguito esattamente una volta nel momento in cui un tasto viene premuto. Lo utilizzi per le azioni che non devono ripetersi mentre il tasto resta premuto, come saltare o mettere in pausa.
Il motore passa il nome del tasto come stringa, quindi lo confronti con nomi come 'space' o 'escape'.
function love.keypressed(key)
if key == 'space' then
player.jumping = true
end
endUscire con Escape
Un approccio comune consiste nel chiudere il gioco quando il giocatore preme Escape. love.event.quit arresta il motore in modo pulito.
Poiché keypressed viene eseguito una volta per pressione, si evitano attivazioni ripetute accidentali quando il tasto resta premuto.
function love.keypressed(key)
if key == 'escape' then
love.event.quit()
end
endkeyreleased
love.keyreleased(key) viene eseguito una volta quando si rilascia un tasto. Abbinandolo a keypressed può monitorare autonomamente gli stati di pressione.
È utile per le meccaniche di caricamento: inizi a caricare alla pressione, esegua il tiro al rilascio e misuri per quanto tempo il tasto è rimasto premuto.
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
endPosizione del mouse
love.mouse.getPosition restituisce le coordinate x e y correnti del cursore all'interno di love.update o love.draw. Può anche utilizzare separatamente getX e getY.
Le coordinate corrispondono allo spazio di disegno: l'origine si trova in alto a sinistra e il valore di y aumenta verso il basso.
function love.update(dt)
local mx, my = love.mouse.getPosition()
crosshair.x, crosshair.y = mx, my
endPulsanti del mouse
Interroghi i pulsanti con love.mouse.isDown(1), dove 1 indica il pulsante sinistro, 2 quello destro e 3 quello centrale.
Per i clic singoli utilizzi l'evento love.mousepressed(x, y, button), che viene eseguito una volta e fornisce direttamente le coordinate del clic.
function love.mousepressed(x, y, button)
if button == 1 then
spawnAt(x, y)
end
endInput testuale
Per la digitazione, love.textinput(text) fornisce il carattere effettivo, tenendo conto della disposizione della tastiera e dei tasti modificatori. È preferibile a keypressed per creare campi di testo.
Utilizzi keypressed insieme a questo evento per gestire tasti speciali come backspace e invio, che textinput non invia.
function love.textinput(t)
inputBuffer = inputBuffer .. t
endCombinare polling ed eventi
Nei giochi reali si combinano entrambi gli stili: si interrogano i tasti di movimento a ogni frame in love.update, mentre le azioni singole vengono gestite nei callback degli eventi.
Scegliere lo stile corretto evita bug. Interrogare un salto in update lo attiverebbe a ogni frame in cui il tasto resta premuto; un evento lo attiva una sola volta, come previsto.
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
endNozioni di base sui gamepad
LÖVE supporta anche i controller tramite l'API joystick. love.joystickpressed e isGamepadDown del joystick consentono di leggere i pulsanti.
Le levette analogiche restituiscono valori da -1 a 1 tramite getGamepadAxis, permettendo di modulare fluidamente il movimento, proprio come con il polling della tastiera e dt.
function love.update(dt)
if joystick then
local ax = joystick:getGamepadAxis('leftx')
player.x = player.x + ax * player.speed * dt
end
endVerifica rapida
Verifichi la Sua comprensione della gestione dell'input in LÖVE.
Riepilogo
L'input in LÖVE offre due modalità: utilizzi il polling con love.keyboard.isDown e love.mouse.isDown per le azioni continue, e reagisca ai callback degli eventi come love.keypressed e love.mousepressed per le azioni singole.
Le API per mouse, testo e gamepad completano il quadro. Scegliere lo stile corretto mantiene i controlli reattivi e privi di bug.
Domande Frequenti
La lezione «Gestire l'input» è gratuita?
Sì — il testo completo di «Gestire l'input» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Lua Academy, passa a CoddyKit PRO. Il corso Lua Academy include 4 lezioni in totale.
Cosa imparerò in «Gestire l'input»?
Reagisca ai tasti e al mouse. Eserciti Lua Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Lua Academy?
Non è richiesta alcuna esperienza precedente. Lua Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.
Quanto tempo richiede la lezione «Gestire l'input»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Lua Academy?
Sì. Ogni lezione Lua Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.