가상 키 추가 (virtual_key_add)
이 함수는 화면의 특정 영역을 키보드 이벤트에 매핑할 수 있게 해줍니다. 즉, 특정 영역에 가상 키를 할당하면, 그 영역을 터치할 때마다 해당 키에 매핑된 키보드 이벤트가 발생합니다. 각 가상 키는 변수에 할당할 수 있으며, 이를 통해 추가적인 가상 키 함수에서 이 키를 보여주거나 숨기거나 삭제할 수 있습니다. 이러한 키는 방 단위로 할당되며, 방을 변경할 때 GameMaker에 의해 자동으로 제거됩니다.
가상 키의 실제 위치는 방의 위치가 아닌 화면의 위치를 기준으로 하며, x/y 값은 화면에서의 절대 좌표입니다. 따라서 뷰나 상대적인 방 좌표를 걱정할 필요가 없으며, 객체의 Create Event에서 키를 정의한 후, Draw GUI Event에서 키 스프라이트를 그리면 됩니다. GUI 레이어의 크기를 화면과 동일하게 설정해야 합니다.
문법
virtual_key_add(x, y, w, h, keycode);
인자 설명
인자 | 타입 | 설명 |
---|---|---|
x | Real | 화면에서 가상 키의 x 좌표 (왼쪽) |
y | Real | 화면에서 가상 키의 y 좌표 (위쪽) |
w | Real | 가상 키의 너비 |
h | Real | 가상 키의 높이 |
keycode | Virtual Key Constant (vk_*) | 해당 영역을 터치할 때 발생할 키보드 이벤트 |
반환값
- Virtual Key ID
예제
global.Left = virtual_key_add(32, 32, 64, 64, vk_left);
위 코드는 화면의 (32, 32) 위치에 64x64 픽셀 크기의 가상 키를 생성하며, 이 키를 터치하면 vk_left
이벤트가 발생하도록 설정하고, 이 가상 키의 인덱스를 전역 변수에 할당합니다.
활용 예제
- 가상 키 생성 및 이벤트 처리
gml // Create Event global.Left = virtual_key_add(50, 100, 80, 80, vk_left); global.Right = virtual_key_add(150, 100, 80, 80, vk_right);
- 가상 키 표시
gml // Draw GUI Event draw_sprite(spr_virtual_key, 0, global.Left.x, global.Left.y); draw_sprite(spr_virtual_key, 1, global.Right.x, global.Right.y);
- 가상 키 숨기기
gml // 특정 조건에서 가상 키 숨기기 if (some_condition) { virtual_key_show(global.Left, false); }
- 가상 키 삭제
gml // 게임 종료 시 가상 키 삭제 virtual_key_delete(global.Left);
이와 같은 방식으로 가상 키를 활용하여 터치 기반의 게임 인터페이스를 쉽게 구현할 수 있습니다.