GameMaker강좌[GMS2]/GMS2기초강좌

[게임메이커 강좌-기초][GMS2]게임에서 룸 이동

타락카얀 2023. 7. 11. 09:40
728x90

 

 

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);


 

위의 코드는 현재 룸의 이름을 화면에 표시합니다.

 

 

 

 

 

300x250