0Pricing
Lua Academy · 강의

입력 처리하기

키와 마우스에 반응해 보세요.

입력 처리하기은(는) CoddyKit의 무료 Lua Academy 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Lua Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Lua Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

입력을 읽는 두 가지 방법

LÖVE는 두 가지 입력 방식을 제공합니다. 폴링은 매 프레임마다 "지금 이 키가 눌려 있는가?"를 확인하므로 이동과 같은 지속적인 동작에 적합합니다.

이벤트는 어떤 일이 발생했을 때 한 번 실행되는 콜백입니다. 예를 들어 love.keypressed는 점프나 발사처럼 한 번만 실행할 동작에 적합합니다.

키보드 폴링

love.keyboard.isDown(key)은 키를 누르고 있는 동안 참을 반환합니다. 부드럽고 지속적인 반응을 얻으려면 love.update 안에서 호출하십시오.

매 프레임 확인되므로 키를 계속 누르고 있으면 동작도 계속됩니다. 이는 플레이어를 이동시키는 데 자연스럽게 적합합니다.

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

여러 키 확인하기

love.keyboard.isDown은 한 번에 여러 키를 받아들여 그중 하나라도 눌려 있으면 참을 반환하므로, 여러 키 배치를 지원할 때 편리합니다.

각 방향을 독립적으로 처리하여 완전한 네 방향 이동을 구현하도록 별도의 확인을 연결할 수도 있습니다.

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

keypressed 이벤트

love.keypressed(key)는 키가 눌리는 순간 정확히 한 번 실행됩니다. 점프나 일시 정지처럼 키를 누르고 있는 동안 반복되지 않아야 하는 동작에 사용하십시오.

엔진은 키 이름을 문자열로 전달하므로 'space'나 'escape'와 같은 이름과 비교합니다.

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

Escape 키로 종료하기

플레이어가 Escape를 누르면 게임을 닫는 방식이 흔히 사용됩니다. love.event.quit는 엔진을 깔끔하게 종료합니다.

keypressed는 누를 때마다 한 번만 실행되므로 키를 계속 누를 때 동작이 실수로 반복되는 것을 막을 수 있습니다.

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

keyreleased

love.keyreleased(key)는 키를 놓는 순간 한 번 실행됩니다. 이를 keypressed와 함께 사용하면 키를 누르고 있는 상태를 직접 추적할 수 있습니다.

이는 충전 방식에 유용합니다. 누를 때 충전을 시작하고, 놓을 때 발사하며, 키를 누르고 있었던 시간을 측정할 수 있습니다.

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

마우스 위치

love.mouse.getPosition은 love.update 또는 love.draw 안에서 커서의 현재 x와 y를 반환합니다. getX와 getY를 따로 사용할 수도 있습니다.

좌표는 그리기 공간과 일치합니다. 원점은 왼쪽 위에 있고 y는 아래쪽으로 증가합니다.

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

마우스 버튼

love.mouse.isDown(1)으로 버튼을 폴링하십시오. 여기서 1은 왼쪽 버튼, 2는 오른쪽 버튼, 3은 가운데 버튼입니다.

한 번의 클릭을 처리하려면 이벤트 love.mousepressed(x, y, button)을 사용하십시오. 이 이벤트는 한 번 실행되며 클릭 좌표를 직접 제공합니다.

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

텍스트 입력

입력할 때 love.textinput(text)은 키보드 배열과 보조 키를 반영한 실제 문자를 전달합니다. 텍스트 필드를 만들 때는 keypressed보다 이 방법이 좋습니다.

textinput이 전달하지 않는 백스페이스나 Enter 같은 특수 키를 처리하려면 keypressed를 함께 사용하십시오.

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

폴링과 이벤트 결합하기

실제 게임에서는 두 방식을 함께 사용합니다. love.update에서 매 프레임 이동 키를 폴링하고, 한 번만 실행되는 동작은 이벤트 콜백에서 처리합니다.

알맞은 방식을 선택하면 오류를 피할 수 있습니다. update에서 점프를 폴링하면 키를 누르고 있는 모든 프레임마다 실행되지만, 이벤트는 의도한 대로 한 번만 실행됩니다.

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

게임패드 기초

LÖVE는 조이스틱 API를 통해 컨트롤러도 지원합니다. love.joystickpressed와 조이스틱의 isGamepadDown으로 버튼을 읽을 수 있습니다.

아날로그 스틱은 getGamepadAxis를 통해 -1에서 1 사이의 값을 반환하므로, dt를 사용한 키보드 폴링과 마찬가지로 이동을 부드럽게 조절할 수 있습니다.

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

빠른 확인

LÖVE의 입력 처리에 대한 이해도를 확인해 보십시오.

복습

LÖVE 입력에는 두 가지 방식이 있습니다. 지속적인 동작에는 love.keyboard.isDown과 love.mouse.isDown으로 폴링하고, 한 번만 실행되는 동작에는 love.keypressed와 love.mousepressed 같은 이벤트 콜백에 반응합니다.

마우스, 텍스트, 게임패드 API가 나머지 입력 기능을 제공합니다. 알맞은 방식을 선택하면 조작감이 즉각적으로 유지되고 오류도 줄어듭니다.

자주 묻는 질문

“입력 처리하기” 강의는 무료인가요?

네 — “입력 처리하기” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Lua Academy 강의 전체를 잠금 해제할 수 있습니다. Lua Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“입력 처리하기”에서 뭘 배우나요?

키와 마우스에 반응해 보세요. 브라우저에서 직접 실행하는 실습 코드로 Lua Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Lua Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Lua Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.

“입력 처리하기” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Lua Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Lua Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. LOVE 게임 루프
  2. 도형과 이미지 그리기
  3. 입력 처리하기
  4. 이동과 충돌
← Lua Academy(으)로 돌아가기