키보드 입력
GameMaker에서 키보드를 다룰 때, 눌림 상태나 해제 상태를 인식할 수 있는 다양한 함수들이 제공됩니다. 또한, 모든 키 입력을 문자열로 저장하거나 마지막으로 눌린 키를 알려주는 함수도 있으며, 키보드 상태를 완전히 초기화하는 함수도 있습니다.
각 키에서 입력되는 문자는 UTF-8 코드로 정의되며, 이는 숫자 값입니다. 이 값은 ord
함수를 사용하여 어떤 문자에 대해서도 가져올 수 있습니다. GameMaker는 가장 많이 사용되는 키보드 특수 키에 대한 상수와 특별한 함수도 제공합니다. 일반적으로 ord
와 keyboard_check*
함수를 조합하여 사용합니다. 예를 들어:
if (keyboard_check(ord("A"))) {
hspeed = -5;
}
위 코드는 "A" 키가 눌렸는지 확인하고, 눌렸다면 객체의 수평 속도를 -5로 설정합니다. ord
를 이렇게 사용하는 경우, 입력 문자열이 한 문자 길이여야 하며 0에서 9까지의 숫자 또는 대문자 A에서 Z까지의 문자여야만 올바르게 작동합니다. ord
함수는 전체 UTF-8 값을 반환하지만, keyboard_check*
함수는 A-Z와 0-9만 감지합니다.
방향키 및 Shift 키 사용하기
방향키를 사용하거나 "Shift" 키를 이용해 액션을 수정하고 싶다면, GameMaker는 vk_*
상수(여기서 vk는 virtual key를 의미)를 제공합니다. 아래는 vk_*
상수의 목록입니다.
상수 | 설명 |
---|---|
vk_nokey | 아무 키도 눌리지 않음을 나타내는 키코드 |
vk_anykey | 아무 키가 눌렸음을 나타내는 키코드 |
vk_left | 왼쪽 방향키의 키코드 |
vk_right | 오른쪽 방향키의 키코드 |
vk_up | 위쪽 방향키의 키코드 |
vk_down | 아래쪽 방향키의 키코드 |
vk_enter | Enter 키의 키코드 |
vk_escape | Escape 키의 키코드 |
vk_space | Space 키의 키코드 |
vk_shift | Shift 키 중 하나 |
vk_control | Control 키 중 하나 |
vk_alt | Alt 키의 키코드 |
vk_backspace | Backspace 키의 키코드 |
vk_tab | Tab 키의 키코드 |
vk_home | Home 키의 키코드 |
vk_end | End 키의 키코드 |
vk_delete | Delete 키의 키코드 |
vk_insert | Insert 키의 키코드 |
vk_pageup | Page Up 키의 키코드 |
vk_pagedown | Page Down 키의 키코드 |
vk_pause | Pause/Break 키의 키코드 |
vk_printscreen | Print Screen/SysRq 키의 키코드 |
vk_f1 ... vk_f12 | F1부터 F12까지의 기능 키의 키코드 |
vk_numpad0 ... vk_numpad9 | 숫자 키패드의 숫자 키들 |
vk_multiply | 숫자 키패드의 곱하기 키 |
vk_divide | 숫자 키패드의 나누기 키 |
vk_add | 숫자 키패드의 더하기 키 |
vk_subtract | 숫자 키패드의 빼기 키 |
vk_decimal | 숫자 키패드의 소수점 키 |
vk_lshift | 왼쪽 Shift 키의 키코드 |
vk_lcontrol | 왼쪽 Control 키의 키코드 |
vk_lalt | 왼쪽 Alt 키의 키코드 |
vk_rshift | 오른쪽 Shift 키의 키코드 |
vk_rcontrol | 오른쪽 Control 키의 키코드 |
vk_ralt | 오른쪽 Alt 키의 키코드 |
다음은 vk_*
상수를 사용하는 간단한 예제입니다:
if (keyboard_check_pressed(vk_tab)) {
instance_create_layer(x, y, "Controllers", obj_Menu);
}
위 코드는 "Tab" 키가 눌렸는지 확인하고, 눌렸다면 obj_Menu
객체의 인스턴스를 생성합니다.
키 문자 확인하기
0-9, A-Z 또는 vk_*
상수가 아닌 키 문자를 확인해야 하는 경우, keyboard_*
변수를 확인해야 합니다. 예를 들어 keyboard_lastchar
를 사용할 수 있습니다:
var _key = keyboard_lastchar;
if ord(_key) == ord("ç") {
show_debug_message("ç 키가 눌렸습니다.");
}
함수 참조
함수 이름 | 설명 |
---|---|
io_clearkey | 키보드 입력 초기화 |
keyboard_check | 키가 눌렸는지 확인 |
keyboard_check_pressed | 키가 눌렸는지 확인 (한 번만) |
keyboard_check_released | 키가 해제되었는지 확인 |
keyboard_check_direct | 직접 키보드 입력 확인 |
keyboard_clear | 키보드 상태 초기화 |
keyboard_set_map | 키보드 매핑 설정 |
keyboard_get_map | 키보드 매핑 가져오기 |
keyboard_unset_map | 키보드 매핑 해제 |
keyboard_set_numlock | Num Lock 설정 |
keyboard_get_numlock | Num Lock 상태 가져오기 |
keyboard_key | 현재 눌린 키의 키코드 |
keyboard_lastkey | 마지막 눌린 키의 키코드 |
keyboard_lastchar | 마지막 눌린 문자 |
keyboard_string | 키보드 입력 문자열 |
참고: 가상 키보드를 사용할 때는 keyboard_string
변수만 업데이트됩니다.