GAME MAKER 강좌
KAYAN
◈ 가상 키 구성
이전 강좌에서는 가상 키 기능에 대해 간략히 알아보았습니다.
이번 강좌에서는 가상 키를 직접 구성해봅시다.
(▲ 가상 키 사용)
먼저 키의 버튼에 대한 스프라이트 이미지를 구성해야 합니다.
가상 키를 생성하면 설정은 유효하지만, 이미지는 보이지 않기 때문이죠.
강좌에서는 64x64 크기의 좌우 방향 버튼과 점프 버튼 3가지를 구성해보겠습니다.
(▲ 왼쪽 키 이미지)
(▲ 오른쪽 키 이미지)
(▲ 점프 키 이미지)
그리고 버튼에 대한 오브젝트를 구성해야 합니다.
먼저 모든 가상 키 버튼을 제어할 부모 오브젝트(parent)를 하나 만듭니다.
(▲ 부모 오브젝트-Obj_virtual_key_parent)
그리고 가상 키 버튼에 해당하는 오브젝트(왼쪽, 오른쪽, 점프)를 생성 후, Sprite에 버튼에 해당하는
이미지를 지정하고, Parent 를 눌러 이전에 만든 부모 오브젝트를 지정하면 됩니다.
(▲ 왼쪽 키 오브젝트)
그리고 Visible을 체크해제 합니다. 왜냐하면, 가상 키는 Draw Gui 이벤트의 좌표 기준으로 작동하기
때문이죠.
Visible이 체크되어 있으면, 아래와 같이, 일반 화면에서 이미지의 좌표가 Draw Gui와는 달리 룸의
좌표를 따르기 때문에 위치가 어긋날 수 있습니다.
(▲ 원래 표시되어야할 Draw Gui 위치=왼쪽 , 룸의 잘못된 위치=오른쪽)
다른 버튼들도 같이 만듭시다.
(▲ 오른쪽 키 오브젝트)
(▲ 점프 키 오브젝트)
이제 버튼에 가상 키를 설정해야 합니다.
각 버튼(왼쪽, 오른쪽, 점프 버튼) 오브젝트에 Room Start 이벤트를 추가하고, virtual_key_add 함수를
사용하여 가상 키를 생성합니다.
가상 키는 룸을 이동하거나 게임이 종료되면 자동으로 제거 됩니다.
따라서 가상 키가 필요로 하는 모든 룸에 배치해야 하는데, 오브젝트의 Persistent (룸을 이동해도
해당 오브젝트는 모든 설정을 유지함)를 사용하면 굳이 모든 룸에 배치할 필요가 없습니다.
가상 키를 필요로 하는 처음 룸에만 배치하면 되기 때문이죠. 그리면 다음 룸으로 이동해도
버튼 오브젝트는 그대로 남게됩니다.
(▲ Persistent 체크하면, 다음 룸에 오브젝트를 배치 안해도 현재 오브젝트는 그대로 유지됨)
룸에 수동으로 배치하고자 한다면, Persistent 기능을 사용할 필요는 없지만, 처음 룸에 배치한 대로
유지시키려면 가상 키 오브젝트들의 Persistent 를 체크하세요.
먼저 왼쪽 키 버튼 오브젝트부터 설정합시다.
왼쪽 키는 vk_left 방향키를 사용하겠습니다.
//★ Obj_virtual_left - 왼쪽 키 오브젝트 - Room Start 이벤트 virtual_key_add( x, y, 64, 64, vk_left); |
가상키의 크기는 이미지의 크기대로 64x64로 설정했습니다.
다음은 오른쪽 키 버튼 오브젝트입니다.
Room Start 이벤트를 추가하고, virtual_key_add 함수를 사용하여 가상 키를 생성합니다.
오른쪽 키는 vk_right 방향 키를 사용하겠습니다.
//★ Obj_virtual_right - 오른쪽 키 오브젝트 - Room Start 이벤트 virtual_key_add( x, y, 64, 64, vk_right ); |
왼쪽키와 마찬가지로 가상키 설정은 이미지의 크기를 기준으로 설정합니다.
다음은 점프 키 버튼 오브젝트를 설정합시다.
Room Start 이벤트를 추가하고, virtual_key_add 함수를 사용하여 가상 키를 생성합니다.
점프 키는 vk_space 스페이스 키를 사용하겠습니다.
//★ Obj_virtual_up - 점프 키 오브젝트 - Room Start 이벤트 virtual_key_add( x, y, 64, 64, vk_space ); |
※ [참고] : 일반적으로 방향 키와 같은 특수 키는 vk_ 상수를 사용하며, 일반문자는 ord(string) 함수를
사용해 문자 키에 대한 값을 반환하여 사용합니다.
예) ord("A") : 키보드 [A] 키
◎ [vk_ 상수] 일람
vk_nokey : 아무 키도 누르지 않음
vk_anykey : 아무 키를 누름
vk_left : 왼쪽 방향 키
vk_right : 오른쪽 방향 키
vk_up : 위쪽 방향 키
vk_down : 아래쪽 방향 키
vk_enter : 엔터 키
vk_escape : ESC 키
vk_space : 스페이스 키
vk_shift : 시프트 키
vk_control : 컨트롤 키
vk_alt : Alt 키
vk_backspace : 백스페이스 키
vk_tab : Tab 키
vk_home : Home 키
vk_end : End 키
vk_delete : Delete 키
vk_insert : Insert 키
vk_pageup : pageup 키
vk_pagedown : pagedown 키
vk_pause : pause/break 키
vk_printscreen : printscreen/sysrq 키
vk_f1 ~ vk_f12 : F1 ~ F12 키
vk_numpad0 ~ vk_numpad9 : 숫자 패드의 숫자 키
vk_multiply : 숫자 패드의 곱하기( * ) 키
vk_divide : 숫자 패드의 나누기( / ) 키
vk_add : 숫자 패드의 더하기( + ) 키
vk_subtract : 숫자 패드의 빼기( - ) 키
vk_decimal : 숫자 패드의 도트( . ) 키
이제 플레이어 오브젝트에 Draw Gui 이벤트를 추가하고, 아래와 같이 이미지를 표시해주면 됩니다.
이것은 가상 키 버튼 오브젝트의 Visible을 체크해제 했기 때문에, 다시 표시해주는 것입니다.
(▲ Draw Gui 이벤트에서 버튼 이미지를 표시)
//★ 플레이어 오브젝트 - Draw Gui 이벤트 with( Obj_virtual_key_parent ){ draw_self( ); } |
또는 Draw Gui 이벤트가 활성중인 다른 오브젝트에서 가상 키 이미지를 표시하셔도 됩니다.
◈ 룸에 배치
이제까지 만든 가상 키 버튼들을 가상 키를 필요로 하는 룸의 인스턴스 레이어(Instance Layer)에
모두 배치합시다.
가상 키 오브젝트의 Persistent 를 체크했다면, 첫번째 룸에만 배치하면 됩니다.
(▲ 버튼 배치)
가상 키 버튼은 룸의 좌표와는 상관없이 Draw Gui 화면의 좌표를 사용하기 때문에, 위와 같이,
카메라 크기에 맞게 버튼을 배치해요.
(▲ 테스트 화면)
잘 작동하는지 테스트 해봅시다.
'GameMaker강좌[GMS2] > GMS2기초강좌' 카테고리의 다른 글
[게임메이커 강좌-기초][GMS2] 코드로 타일 배치-2 : 새 레이어 사용 (0) | 2021.02.15 |
---|---|
[게임메이커 강좌-기초][GMS2] 코드로 타일 배치-1 : 기본 타일 레이어 사용 (0) | 2021.02.15 |
[게임메이커 강좌-기초][GMS2] 가상 키-1-마우스 클릭 또는 화면 터치 (1) | 2021.01.16 |
[게임메이커 강좌-기초][GMS2]프리미티브(Primitive) 종류 - 텍스쳐 매핑 2 (0) | 2019.04.03 |
[게임메이커 강좌-기초][GMS2]프리미티브(Primitive) 종류 - 텍스쳐 매핑 1 (0) | 2019.04.01 |
댓글