0Pricing
Lua Academy · Aula

Lidando com entradas

Responda ao teclado e ao mouse.

Lidando com entradas é uma aula grátis de Lua Academy no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Lua Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Lua Academy inclui 4 aulas no total.

Dois Modos de Ler a Entrada

O LÖVE oferece dois estilos de entrada. A consulta pergunta "esta tecla está pressionada agora?" a cada quadro, sendo ideal para ações contínuas, como movimentação.

Os eventos são funções de retorno que são executadas uma vez quando algo acontece, como love.keypressed, sendo ideais para ações pontuais, como pular ou atirar.

Consultando o Teclado

love.keyboard.isDown(key) retorna verdadeiro enquanto uma tecla estiver pressionada. Chame-a dentro de love.update para obter uma resposta suave e contínua.

Como essa verificação é feita a cada quadro, manter a tecla pressionada mantém a ação em andamento. Essa é a opção natural para mover um jogador.

function love.update(dt)
  if love.keyboard.isDown('right') then
    player.x = player.x + player.speed * dt
  end
end

Verificando Várias Teclas

love.keyboard.isDown aceita várias teclas ao mesmo tempo e retorna verdadeiro se alguma delas estiver pressionada, o que é conveniente para associações alternativas.

Você também pode encadear verificações separadas para tratar cada direção de forma independente e obter movimentação completa nas quatro direções.

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
end

O Evento keypressed

love.keypressed(key) é executado exatamente uma vez no momento em que uma tecla é pressionada. Use-o para ações que não devem se repetir enquanto a tecla estiver pressionada, como pular ou pausar.

O mecanismo passa o nome da tecla como uma cadeia de caracteres, portanto compare-o com nomes como 'space' ou 'escape'.

function love.keypressed(key)
  if key == 'space' then
    player.jumping = true
  end
end

Saindo com Esc

Um padrão comum é fechar o jogo quando o jogador pressiona Esc. love.event.quit encerra o mecanismo de forma limpa.

Como keypressed é executado uma vez por pressionamento, isso evita ativações repetidas acidentais causadas por manter a tecla pressionada.

function love.keypressed(key)
  if key == 'escape' then
    love.event.quit()
  end
end

keyreleased

love.keyreleased(key) é executado uma vez quando uma tecla é solta. Usá-lo junto com keypressed permite acompanhar por conta própria os estados das teclas pressionadas.

Isso é útil para mecânicas de carregamento: comece a carregar ao pressionar, dispare ao soltar e meça por quanto tempo a tecla permaneceu pressionada.

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
end

Posição do Mouse

love.mouse.getPosition retorna as coordenadas x e y atuais do cursor dentro de love.update ou love.draw. Você também pode usar getX e getY separadamente.

As coordenadas correspondem ao espaço de desenho: a origem fica no canto superior esquerdo e y aumenta para baixo.

function love.update(dt)
  local mx, my = love.mouse.getPosition()
  crosshair.x, crosshair.y = mx, my
end

Botões do Mouse

Consulte os botões com love.mouse.isDown(1), em que 1 é o botão esquerdo, 2 é o direito e 3 é o botão do meio.

Para cliques únicos, use o evento love.mousepressed(x, y, button), que é executado uma vez e fornece diretamente as coordenadas do clique.

function love.mousepressed(x, y, button)
  if button == 1 then
    spawnAt(x, y)
  end
end

Entrada de Texto

Para digitar, love.textinput(text) fornece o caractere efetivamente digitado, respeitando o layout e os modificadores. Isso é melhor do que keypressed para criar campos de texto.

Use keypressed junto com ele para tratar teclas especiais, como backspace e enter, que textinput não envia.

function love.textinput(t)
  inputBuffer = inputBuffer .. t
end

Combinando Consultas e Eventos

Jogos reais combinam os dois estilos: consulte as teclas de movimentação a cada quadro em love.update, enquanto as ações pontuais ficam nas funções de retorno dos eventos.

Escolher o estilo correto evita erros. Consultar um salto em update faria a ação ser executada a cada quadro enquanto a tecla estivesse pressionada; um evento a executa uma vez, como pretendido.

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
end

Noções Básicas de Controles

O LÖVE também oferece suporte a controles por meio da API de controles. love.joystickpressed e o isGamepadDown de um controle permitem ler os botões.

As alavancas analógicas retornam valores de -1 a 1 por meio de getGamepadAxis, permitindo ajustar a movimentação suavemente, assim como na consulta do teclado com dt.

function love.update(dt)
  if joystick then
    local ax = joystick:getGamepadAxis('leftx')
    player.x = player.x + ax * player.speed * dt
  end
end

Verificação Rápida

Teste sua compreensão do tratamento de entradas no LÖVE.

Recapitulação

A entrada do LÖVE tem dois estilos: consulte com love.keyboard.isDown e love.mouse.isDown para ações contínuas, e reaja a funções de retorno de eventos, como love.keypressed e love.mousepressed, para ações pontuais.

As APIs de mouse, texto e controles completam o conjunto. Escolher o estilo correto mantém os controles responsivos e livres de erros.

Perguntas Frequentes

A aula “Lidando com entradas” é grátis?

Sim — o texto completo de “Lidando com entradas” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Lua Academy, atualize para CoddyKit PRO. O curso de Lua Academy inclui 4 aulas no total.

O que vou aprender em “Lidando com entradas”?

Responda ao teclado e ao mouse. Você pratica Lua Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Lua Academy?

Nenhuma experiência prévia é necessária. Lua Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.

Quanto tempo leva a aula “Lidando com entradas”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Lua Academy?

Sim. Cada aula de Lua Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. O laço de jogo do LOVE
  2. Desenhando formas e imagens
  3. Lidando com entradas
  4. Movimento e colisões
← Voltar para Lua Academy