이번 강좌에서는 게임 클리어 이벤트를 구성해봅시다.
◈ 게임 시작
먼저 게임 시작 알림을 표시해봅시다.
(▲ 게임 시작 표시)
게임 시작 이미지를 스프라이트로 추가하고, 중심점을 가운데로 맞춥니다.
(▲ 게임 시작 이미지)
오브젝트를 하나 만들고, 이미지를 지정합니다.
(▲ 게임 시작 표시 오브젝트)
이 오브젝트는 몇 초정도 표시하고, [알람 이벤트]를 통해 파기할 거에요.
[Create 이벤트]를 추가하고, [알람 이벤트]를 호출합니다.
● obj_gamestart - Create 이벤트 alarm[0] = 90; |
[알람 이벤트]를 추가하고, 오브젝트를 파기하면 됩니다.
● obj_gamestart - Alarm 0 이벤트 instance_destroy( ); |
게임 시스템 오브젝트에 [Room Start 이벤트]를 추가하고, 게임 시작 오브젝트를 생성해주면 완성됩니다.
[Room Start 이벤트]는 룸이 시작할 때마다 실행되는 이벤트 입니다.
● obj_game_system - Room Start 이벤트 instance_create_depth( room_width*0.5, room_height*0.5, -10000, obj_gamestart ); |
◈ 게임 오버
게임 오버를 구성해봅시다.
(▲ 게임 오버 표시)
게임 오버 이미지를 스프라이트로 추가하고, 중심점을 가운데로 맞춥니다.
(▲ 게임 오버 이미지)
오브젝트를 만들고 이미지를 지정합니다.
이 오브젝트는 단순히 표시만을 위한 것으로 이벤트는 없어도 됩니다.
(▲ 게임오버 오브젝트)
만약 게임 오버 메시지가 뜬 후, 게임을 자동으로 재시작 하고 싶다면, [Create 이벤트]에서
[알람 이벤트]를 대기시간만큼 호출하고,
예)
● obj_gameover - Create 이벤트 alarm[0] = 120; |
[알람 이벤트]에서 game_restart( ) 함수를 사용하면, 게임 오버 메시지가 뜨고, 지정한
대기시간이 지나면 자동으로 게임을 재시작할 수 있습니다.
예)
● obj_gameover - Alarm 0 이벤트 game_restart( ); |
현재 스테이지만 재시작하고 싶다면 먼저 라이프, 타이머 등 게임에 필요한 변수를 초기화하고,
room_restart( ) 함수를 사용하여 룸을 재시작하면 됩니다.
예)
● obj_gameover - Alarm 0 이벤트 global.game_score = 0; global.game_life = 3; global.game_time = 60*60*2; global.bomb_numb = 1; global.bomb_level = 1; room_restart( ); |
다른 방법으로 게임 오버 메시지가 표시되었을 때, 특정 키를 눌러 재시작하는 방법이 있습니다.
예)
● obj_gameover - Step 이벤트 if keyboard_check_pressed( vk_enter ){ //Enter 키를 누르면 룸 재시작 global.game_score = 0; global.game_life = 3; global.game_time = 60*60*2; global.bomb_numb = 1; global.bomb_level = 1; room_restart( ); } |
이제 게임 오버를 표시해야겠지요.
게임 시스템 오브젝트에 [Step 이벤트]를 추가합니다.
게임 오버를 표시하려면 게임오버 조건을 만들어야 합니다.
게임 오버는 라이프가 0일 때, 게임오버 오브젝트를 표시합시다.
● obj_game_system - Step 이벤트 if global.game_life< = 0{ if !( instance_exists( obj_gameover ) ){ instance_create_depth( room_width*0.5 , room_height*0.5, -10000, obj_gameover ); } } |
다음은 게임 타이머 구성입니다.
게임 시작 오브젝트의 [Room Start 이벤트]에 스테이지 시간을 정합니다.
시간은 1스텝(프레임)= 1/게임 속도 입니다.
초단위면 (게임속도)x(초), 분단위면 (게임속도)x(초)x(분)으로 계산하면 쉽습니다.
예를 들어 2분을 정한다면, (게임속도)x(초)x(분)으로 계산해서 60x60x2 로 간단하게
설정할 수 있습니다.
● obj_game_system - Room Start 이벤트 global.game_time = 60*60*2; |
타이머는 [Step 이벤트]와 같은 곳에서 매 스텝마다 감소시키면 됩니다.
타이머가 0이 되면 플레이어는 파기 라이프가 감소합니다.
만약 라이프가 남았다면 추가 시간을 주도록 해요.
● obj_game_system - Step 이벤트 //타임 오버 if global.game_time< = 0{ with( obj_player ){ event_user( 0 ); }//플레이어 파기 이벤트 호출 if global.game_life>0{ global.game_time = 60*30; } } if global.game_time>0{ global.game_time- = 1; }//타이머 작동 |
◈ 게임 클리어
클리어 이벤트를 구성해봅시다.
(▲ 클리어 표시)
먼저 클리어 이미지를 스프라이트 이미지로 추가하고, 중심점을 가운데로 설정합니다.
(▲ 클리어 이미지)
오브젝트를 만들고, 이미지를 지정합니다.
(▲ 클리어 오브젝트)
게임 클리어 상황에서 잠깐동안 클리어 이미지를 화면에 표시하고, 다음 룸으로 이동시킬 것입니다.
[Create 이벤트]를 추가하고, [알람 이벤트]를 호출합니다.
● obj_gameclear - Create 이벤트 alarm[0] = 90; |
[알람 이벤트]를 추가하고, 다음 룸으로 이동시킵니다.
특정 룸으로 이동시키려면, room_goto(룸) 으로 이동시키면 됩니다.
● obj_gameclear - Alarm 0 이벤트 room_goto_next( ); |
클리어 이미지를 표시하려면 게임 클리어 상황을 만들어야 겠죠.
게임 클리어는 처음 구상했던대로 몬스터를 모두 클리어하면 다음 스테이지를
향하는 통로가 열리게 합니다.
그리고 플레이어는 이 통로로 갔을 때 미션을 완수하고 다음 스테이지로 이동할 거에요.
(▲ 스테이지 통로)
단순하죠.
스테이지 통로이미지를 스프라이트 이미지로 추가합니다.
(▲ 스테이지 통로 이미지)
오브젝트를 만들고, 이미지를 지정합니다.
마스크가 일정하지 않은 경우 그리드 크기의 마스크 이미지를 지정해주세요.
(▲ 스테이지 통로 오브젝트)
이 오브젝트는 처음에는 안보이다가, 몬스터를 모두 클리어했을 때, 보이도록 할 겁니다.
따라서 처음 오브젝트는 visible을 체크해제합니다.
그리고 [Step 이벤트]를 추가하고, 클리어 조건을 구성합니다.
먼저 몬스터가 룸에 존재하는지 확인하고, 몬스터가 없고, 현재 위치에 벽과 같은
오브젝트들이 없을 때, 플레이어와 충돌하면 클리어 조건에 도달합니다.
● obj_goal - Step 이벤트 image_speed = 0.2; if !( instance_exists( obj_enemy_parent ) ){ if place_free( x, y ){ visible = 1; //오브젝트 보이기 // 게임 클리어 메시지 표시 if place_meeting( x, y, obj_player ){ if !( instance_exists( obj_gameclear ) ){ with( obj_player ){ instance_destroy( ); }//플레이어는 단순 파기 instance_create_depth( room_width*0.5, room_height*0.5, -10000, obj_gameclear ); } } // 게임 클리어 메시지 표시 } } |
이 오브젝트를 룸에 배치합니다.
(▲ 룸에 배치)
오브젝트는 visible을 체크해제했기 때문에 처음에는 보이지 않다가, 클리어 조건에 해당하면
다시 보이게 될 겁니다.
여기까지 제대로 작동하는지 테스트해봅시다.
'GameMaker강좌[GMS2] > 액션게임강좌' 카테고리의 다른 글
[게임메이커 강좌-액션][GMS2]봄버맨 만들기-7 : 아이템 구성(완) (0) | 2022.02.05 |
---|---|
[게임메이커 강좌-액션][GMS2]봄버맨 만들기-6 : 점수 표시 및 상단 인터페이스 (0) | 2022.02.04 |
[게임메이커 강좌-액션][GMS2]봄버맨 만들기-4 : 폭탄 만들기 (0) | 2022.02.03 |
[게임메이커 강좌-액션][GMS2]봄버맨 만들기-3 : 몬스터 만들기 (2) | 2022.02.03 |
[게임메이커 강좌-액션][GMS2]봄버맨 만들기-2 : 이동 (0) | 2022.02.02 |
댓글