GAME MAKER 강좌
KAYAN
◈ 룸 이동
룸을 이동할 수 있는 기능에 대해 알아봅시다.
아래는 기본적으로 많이 사용하는 3가지 함수들 입니다.
◎ room_goto(index)
◎ room_goto_next( )
◎ room_goto_previous( )
먼저 아래 함수를 사용하면 룸의 순서와는 상관없이 지정한 룸으로 이동하여 게임을 진행할 수 있습니다.
◎ room_goto(index)
기본적으로 룸을 이동할 때 현재 룸에서 [Room End 이벤트]가 실행되고 지정한 룸으로 이동합니다.
switch (global.level) { case 0: room_goto(rm_level1); break; case 1: room_goto(rm_level2); break; case 2: room_goto(rm_level3); break; } |
위의 코드는 전역 변수를 확인하고 보유하고 있는 값에 따라 룸을 변경합니다.
아래 함수를 사용하면 룸 매니저에 나열된 순서로 현재 룸의 다음 순서에 있는 룸으로 이동할 수 있습니다.
◎ room_goto_next( )
(▲ 룸 순서를 이용한 이동)
이 함수는 룸 매니저의 룸 순서에 따라 작동합니다.
(▲ 룸 매니저)
이동할 룸이 존재하지 않으면 오류가 발생하고 게임이 강제로 종료됩니다.
if room_exists(room_next(room)) { room_goto_next(); } |
위의 코드는 현재 룸의 다음 순서에 룸이 존재하고 있는지 확인하고 그렇다면 해당 룸으로 이동합니다.
아래 함수를 사용하면 룸 매니저에 나열된 순서로 현재 룸의 앞 순서에 있는 룸으로 이동할 수 있습니다.
◎ room_goto_previous( )
이 함수는 룸 매니저의 룸 순서에 따라 작동합니다.
이동할 룸이 존재하지 않으면 오류가 발생하고 게임이 강제로 종료됩니다.
if room_exists(room_previous(room)) { room_goto_previous(); } |
위의 코드는 현재 룸의 앞 순서에 룸이 존재하고 있는지를 확인하고, 그렇다면 해당 룸으로 이동합니다.
아래 함수를 사용하면 지정한 룸이 존재하는지를 확인할 수 있습니다.
◎ room_exists(index)
룸이 존재하면 true(1), 그렇지 않으면 false(0)을 반환합니다.
if room_exists(global.rm[0]) { room_goto(global.rm[0]); } |
위의 코드는 "global.rm[ ]" 배열에 인덱싱된 룸이 존재하는지 확인하고 존재하는 경우 해당 룸으로 이동합니다.
◈ 룸 검색
아래의 내장 변수는 기본적으로 게임이 실행 중인 현재 룸의 룸 인덱스를 보유합니다.
◎ room
보통 현재 룸이 어떤 룸인지 확인할 때 사용합니다.
이것은 읽기 전용 변수가 아니지만 이를 변경할 수 있는데, 현재 룸의 인덱스 값을 변경하는 것은 아니고, 변수에 설정한 인덱스와 일치하는 룸으로 이동합니다.
변수를 변경한 인덱스가 유효하지 않은 경우 게임에서 오류가 발생하고 종료되므로 이 작업을 수행할 때 주의해야 합니다.
룸을 이동할 때 활용할 수 있습니다만, 일반적으로 room_goto( ) 함수를 사용하는 것이 좋습니다.
if (room == rm_level1) { audio_play_sound(snd_level1, 1, 1); } |
위의 코드는 현재 룸이 rm_level1 인지 확인하고, 이 경우 지정한 사운드를 재생합니다.
◎ room_first
이 읽기 전용 변수는 룸 매니저에 나열된 순서로 첫 번째 순서에 있는 룸의 인덱스를 반환합니다.
if lives < 1 { room_goto(room_first); } |
위의 코드는 "lives" 변수를 확인하고 1 미만이면 게임의 첫 번째 룸으로 이동합니다.
◎ room_last
이 읽기 전용 변수는 룸 매니저에 나열된 순서로 마지막 순서에 있는 룸의 인덱스를 반환합니다.
if keyboard_check_pressed(ord("Q")) { room_goto(room_last); } |
위의 코드는 키가 눌렸는지 확인하고 그렇다면 게임의 마지막 룸으로 이동합니다.
◎ room_next(numb)
이 함수는 룸 매니저에 나열된 순서에 따라, 지정한 룸 다음 순서에 있는 룸의 인덱스를 반환합니다.
검색한 룸이 없으면 -1이 반환됩니다.
if room_next(room) != -1 { room_goto_next(); } |
위의 코드는 이전 룸이 존재하는지 확인하고 있다면 그 룸으로 이동합니다.
◎ room_previous(numb)
이 함수는 룸 매니저에 나열된 순서에 따라, 지정한 룸 앞 순서에 있는 룸의 인덱스를 반환합니다.
검색한 룸이 없으면 -1이 반환됩니다.
if room_previous(room) != -1 { room_goto_previous(); } |
위의 코드는 이전 룸이 존재하는지 확인하고 있다면 그 룸으로 이동합니다.
◎ room_get_name(index)
이 함수는 지정된 룸의 이름을 문자열로 반환하는데 사용할 수 있습니다.
이것은 문자열일 뿐이며 룸을 직접 참조하는데는 사용할 수 없습니다.
var roomname = room_get_name(room); draw_text(32, 32, roomname); |
위의 코드는 현재 룸의 이름을 화면에 표시합니다.
'GameMaker강좌[GMS2] > GMS2기초강좌' 카테고리의 다른 글
[게임메이커 강좌-기초][GMS2]목표물 방향과 거리측정 (0) | 2023.07.12 |
---|---|
[게임메이커 강좌-기초][GMS2]게임 재시작 및 종료하기 (1) | 2023.07.11 |
[게임메이커 강좌-기초][GMS2]룸 순서 변경 (0) | 2023.07.11 |
[게임메이커 강좌-기초][GMS2] 다중 충돌 체크 - 충돌 인스턴스 목록화 (0) | 2023.02.15 |
[게임메이커 강좌-기초][GMS2] 가상의 충돌 체크 (0) | 2023.02.15 |
댓글