키 입력 처리 문서
이 문서는 게임에서 키 입력을 처리하는 방법에 대한 설명입니다. 주로 키가 눌렸는지 여부를 체크하는 기능에 중점을 둡니다.
기본 개념
If Key Pressed는 키가 처음 눌렸는지를 확인하는 액션입니다. 키가 눌린 순간(프레임)에는 true를 반환하고, 그 외의 경우에는 false를 반환합니다. 만약 not 수식어를 활성화하면 이 행동은 반대로 작동하여, 키가 눌리지 않은 경우에 true를, 눌린 경우에 false를 반환합니다.
주의사항
- 단순히 키가 눌렸는지를 확인하고 싶다면
If Key Pressed를 사용하고, 키를 계속 누르고 있는지 확인하고 싶다면If Key Down을 사용하세요. - "if" 블록에 액션을 추가할 때는 액션의 옆으로 드래그해야 합니다. 다른 위치에 드랍된 액션은 "if" 블록이 끝난 후에 실행됩니다.
액션 구문
If Key Pressed(Key, Not)
인자 설명
| 인자 | 설명 |
|---|---|
| Key | 체크할 키의 이름 |
| Not | 체크를 반전시키는 수식어 (true는 false로, false는 true로) |
예제 코드
아래 코드는 매 스텝마다 키보드 상태를 점검하고, 키가 눌린 상태를 확인합니다. 키가 처음 눌렸을 때 소리를 재생하고, 키가 눌린 동안 스프라이트 색상을 빨간색으로 변경합니다. 키가 눌리지 않으면, 키가 해제되었는지를 확인하여 색상을 흰색으로 초기화합니다.
if (If Key Pressed("space")) {
audio_play_sound(sound_jump, 1, false);
sprite_blend = c_red;
} else {
if (If Key Released("space")) {
sprite_blend = c_white;
}
}
활용 및 응용 예제
- 공격 기능: 사용자가 특정 키(예: "Z")를 눌렀을 때 공격액션을 실행합니다.
gml if (If Key Pressed("Z")) { player_attack(); } - 점프 기능: 스페이스바를 눌렀을 때 캐릭터가 점프하는 예제입니다.
gml if (If Key Pressed("space")) { player_jump(); } - 메뉴 내비게이션: 위쪽 화살표 키를 눌렀을 때 메뉴 항목을 위로 이동합니다.
gml if (If Key Pressed(vk_up)) { menu_move_up(); } - 퍼즐 게임에서의 확인 버튼: 엔터 키를 눌렀을 때 퍼즐이 해결되었는지 확인합니다.
gml if (If Key Pressed(vk_enter)) { check_puzzle_solution(); }
이와 같이 If Key Pressed 액션을 활용하여 게임 내 다양한 동작들을 쉽게 구현할 수 있습니다.