Gestionar la entrada
Responda al teclado y al ratón
Gestionar la entrada es una lección gratuita de Lua Academy en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Lua Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Lua Academy incluye 4 lecciones en total.
Dos formas de leer la entrada
LÖVE ofrece dos estilos de entrada. El sondeo pregunta «¿está pulsada esta tecla ahora mismo?» en cada fotograma, lo que resulta ideal para acciones continuas como el movimiento.
Los eventos son callbacks que se ejecutan una vez cuando sucede algo, como love.keypressed, y resultan ideales para acciones puntuales como saltar o disparar.
Sondear el teclado
love.keyboard.isDown(key) devuelve true mientras se mantiene pulsada una tecla. Llámelo dentro de love.update para obtener una respuesta fluida y continua.
Como se comprueba en cada fotograma, mantener pulsada la tecla mantiene la acción en marcha. Es la opción natural para mover al jugador.
function love.update(dt)
if love.keyboard.isDown('right') then
player.x = player.x + player.speed * dt
end
endComprobar varias teclas
love.keyboard.isDown acepta varias teclas a la vez y devuelve true si se mantiene pulsada cualquiera de ellas, lo que resulta práctico para las asignaciones alternativas.
También puede encadenar comprobaciones independientes para gestionar cada dirección por separado y obtener un movimiento completo en cuatro direcciones.
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
endEl evento keypressed
love.keypressed(key) se ejecuta exactamente una vez en el momento en que se pulsa una tecla. Úselo para acciones que no deben repetirse mientras se mantiene pulsada la tecla, como saltar o pausar.
El motor proporciona el nombre de la tecla como una cadena, por lo que debe compararlo con nombres como 'space' o 'escape'.
function love.keypressed(key)
if key == 'space' then
player.jumping = true
end
endSalir con Escape
Un patrón habitual consiste en cerrar el juego cuando el jugador pulsa Escape. love.event.quit apaga el motor correctamente.
Como keypressed se ejecuta una vez por pulsación, se evitan las activaciones repetidas accidentales que provocarían mantener pulsada la tecla.
function love.keypressed(key)
if key == 'escape' then
love.event.quit()
end
endkeyreleased
love.keyreleased(key) se ejecuta una vez cuando se suelta una tecla. Combinarlo con keypressed permite realizar un seguimiento personalizado de los estados de pulsación.
Esto resulta útil para mecánicas de carga: comience a cargar al pulsar, dispare al soltar y mida cuánto tiempo se mantuvo pulsada la tecla.
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
endPosición del ratón
love.mouse.getPosition devuelve las coordenadas x e y actuales del cursor dentro de love.update o love.draw. También puede usar getX y getY por separado.
Las coordenadas coinciden con el espacio de dibujo: el origen está en la esquina superior izquierda y el valor de y aumenta hacia abajo.
function love.update(dt)
local mx, my = love.mouse.getPosition()
crosshair.x, crosshair.y = mx, my
endBotones del ratón
Sondee los botones con love.mouse.isDown(1), donde 1 es el botón izquierdo, 2 el derecho y 3 el central.
Para hacer clics individuales, use el evento love.mousepressed(x, y, button), que se ejecuta una vez y le proporciona directamente las coordenadas del clic.
function love.mousepressed(x, y, button)
if button == 1 then
spawnAt(x, y)
end
endEntrada de texto
Para escribir, love.textinput(text) proporciona el carácter real, teniendo en cuenta la distribución del teclado y las teclas modificadoras. Es mejor que keypressed para crear campos de texto.
Use keypressed junto con él para gestionar teclas especiales como retroceso y entrada, que textinput no envía.
function love.textinput(t)
inputBuffer = inputBuffer .. t
endCombinar sondeo y eventos
Los juegos reales combinan ambos estilos: sondee las teclas de movimiento en cada fotograma dentro de love.update, mientras que las acciones puntuales se gestionan en callbacks de eventos.
Elegir el estilo adecuado evita errores. Sondear un salto en update lo ejecutaría en cada fotograma mientras se mantuviera pulsada la tecla; un evento lo ejecuta una sola vez, como se pretende.
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
endConceptos básicos de los gamepads
LÖVE también admite mandos mediante la API de joystick. love.joystickpressed y isGamepadDown de un joystick permiten leer los botones.
Los sticks analógicos devuelven valores de -1 a 1 mediante getGamepadAxis, lo que permite escalar el movimiento suavemente, igual que el sondeo del teclado con dt.
function love.update(dt)
if joystick then
local ax = joystick:getGamepadAxis('leftx')
player.x = player.x + ax * player.speed * dt
end
endComprobación rápida
Compruebe su comprensión de la gestión de entradas en LÖVE.
Repaso
La entrada en LÖVE ofrece dos opciones: sondee con love.keyboard.isDown y love.mouse.isDown para las acciones continuas, y responda a callbacks de eventos como love.keypressed y love.mousepressed para las acciones puntuales.
Las API del ratón, del texto y del gamepad completan el conjunto. Elegir el estilo adecuado mantiene los controles ágiles y sin errores.
Preguntas frecuentes
¿La lección «Gestionar la entrada» es gratis?
Sí — el texto completo de «Gestionar la entrada» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Lua Academy, actualiza a CoddyKit PRO. El curso de Lua Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Gestionar la entrada»?
Responda al teclado y al ratón Practicas Lua Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Lua Academy?
No se requiere experiencia previa. Lua Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.
¿Cuánto tiempo toma la lección «Gestionar la entrada»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Lua Academy?
Sí. Cada lección de Lua Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- El bucle de juego de LOVE
- Dibujar formas e imágenes
- Gestionar la entrada
- Movimiento y colisiones