◈ 몬스터 파기시 점수 표시
몬스터 파기시 점수를 표시해봅시다.
(▲ 점수 표시)
숫자는 스프라이트 이미지를 활용할 것입니다.
이미지로 구성하면 폰트에는 없는 단순형태에서부터 복잡한 모양까지 다양한 모양을 구성할 수 있죠.
하지만 강좌에서는 아래와 같이 간단하게 구성하겠습니다.
(▲ 숫자)
0 ~ 9 까지의 숫자 이미지를 스프라이트 이미지로 추가합니다.
(▲ 숫자 이미지)
이제 이미지를 폰트로 만들어야 합니다.
게임 시스템 오브젝트의 [Game Start 이벤트]에 이미지 폰트로 추가합니다.
● obj_game_system - Game Start 이벤트 global.game_font = font_add_sprite( spr_font_small, ord( "0" ), 1, 2 ); |
그리고 [Game End 이벤트]를 추가하고, 추가한 이미지 폰트를 파기하도록 합니다.
● obj_game_system - Game End 이벤트 if font_exists( global.game_font ){ font_delete( global.game_font ); } |
이제 이미지 폰트를 사용할 준비가 되었습니다.
몬스터 점수 표시는 오브젝트를 생성해서 표시하도록 합니다.
점수 표시용 오브젝트를 하나 만듭니다.
(▲ 점수 표시용 오브젝트)
이 오브젝트는 몇초동안 점수만 표시하고, 바로 파기할 것입니다.
[Create 이벤트]를 추가하고, [알람 이벤트]를 호출합니다.
● obj_score_point - Create 이벤트 value = 0; //점수값 alarm[0] = 30; //파기시간 image_blend = c_white; //혼합색 |
[알람 이벤트]를 추가하고, 현재 오브젝트를 파기합니다.
● obj_score_point - Alarm 0 이벤트 instance_destroy( ); |
이제 점수를 표시해야겠지요.
먼저, 추가한 이미지 폰트를 설정하고, 폰트를 정렬합니다.
가로 정렬은 draw_set_halign(가로정렬) 함수를 사용하여 정렬합니다.
◎ fa_left : 왼쪽 정렬
◎ fa_center : 가운데로 정렬
◎ fa_right : 오른쪽으로 정렬
세로 정렬은 draw_set_halign(세로정렬) 함수를 사용하여 정렬합니다.
◎ fa_top : 위로 정렬
◎ fa_middle : 중간으로 정렬
◎ fa_bottom : 아래로 정렬
● obj_score_point - Draw 이벤트 draw_set_font( global.game_font ); //이미지 폰트 설정 draw_set_halign( fa_center ); //폰트 정렬 draw_set_valign( fa_middle ); draw_text_color( x, y, string( value ), image_blend, image_blend, image_blend , image_blend, 1 ); |
마지막으로 텍스트를 표시하면 됩니다.
이 오브젝트를 몬스터의 [폭발 오브젝트와의 충돌 이벤트]에서 생성하면 됩니다.
● obj_enemy_01 - obj_bomb_explo 와의 충돌 이벤트 var it; it = instance_create_depth( x+16, y+16, -10000, obj_score_point ); it.value = 100; |
잘 작동하는지 테스트해봅시다.
◈ 화면 상단에 정보 표시
강좌가 막바지에 다다랐네요.
화면 상단에 라이프 및 점수를 표시해봅시다.
(▲ 라이프 및 점수 표시)
상단에 표시할 인터페이스 이미지를 준비합니다.
(▲ 상단 인터페이스)
표시할 좌표는 이미지 편집기에서 마우스 커서를 이미지에 가져다 대었을 때 상태 표시줄(왼쪽 하단)에서
확인할 수 있어요.
(▲ 이미지에서 좌표 확인하는 방법)
먼저 라이프부터 표시해봅시다.
게임 시스템 오브젝트에 [Draw Gui 이벤트]를 추가합니다.
[Draw GUI 이벤트]는 [Draw 이벤트]와는 달리, 카메라의 좌표, 크기 및 회전의 영향을 받지 않는
GUI(그래픽 사용자 인터페이스) 요소를 표시하기 위해 사용되는 특별한 이벤트입니다.
이 이벤트는 [Draw 이벤트] 보다 화면 맨 앞에 표시되며, 좌표는 카메라 좌표가 아닌
GUI 화면에서의 좌표를 사용합니다.
GUI 화면은 기본적으로 카메라의 크기로 설정되지만, 아래의 함수로 변경할 수도 있습니다.
◎ display_set_gui_size(width, height);
[Draw GUI 이벤트] 에서 표시를 원하는 위치에 라이프 변수값을 표시하도록 합니다.
● obj_game_system - Draw Gui 이벤트 draw_sprite( spr_top_gui, 0, 0, 0 ); var c, _x, _y; //라이프 draw_set_font( global.game_font ); draw_set_halign( fa_center ); draw_set_valign( fa_middle ); _x = 96; _y = 16; c = c_white; draw_text_color( _x, _y, string( global.game_life ), c, c, c, c, 1 ); |
다음은 폭탄 설치 가능 수를 표시해보겠습니다.
● obj_game_system - Draw Gui 이벤트 //폭탄 설치 가능 수 draw_set_halign( fa_center ); draw_set_valign( fa_middle ); _x = 192; _y = 16; c = c_white; draw_text_color( _x, _y , string( global.bomb_numb-instance_number( obj_bomb ) ), c, c, c, c, 1 ); |
게임 점수도 표시해봅시다.
● obj_game_system - Draw Gui 이벤트 //게임 점수 draw_set_halign( fa_right ); draw_set_valign( fa_middle ); _x = 320; _y = 16; c = c_white; draw_text_color( _x, _y, string( global.game_score ), c, c, c, c, 1 ); |
마지막으로 타이머를 표시합니다.
타이머는 분, 초로 나누어 표시해보아요.
● obj_game_system - Draw Gui 이벤트 //타이머 var m, s; draw_set_halign( fa_center ); draw_set_valign( fa_middle ); _x = room_width/2; _y = 16; m = floor( ( global.game_time*( 1/60 ) )*( 1/60 ) ); //분 s = ceil( ( global.game_time*( 1/60 ) ) mod 60 ); //초 c = c_white; draw_text_color( _x-16, _y, string( m ), c, c, c, c, 1 ); c = c_white; draw_text_color( _x+16, _y, string( s ), c, c, c, c, 1 ); |
여기까지 잘 되는지 테스트 해봐요.
'GameMaker강좌[GMS2] > 액션게임강좌' 카테고리의 다른 글
[게임메이커 강좌-액션][GMS2]봄버맨 만들기-7 : 아이템 구성(완) (0) | 2022.02.05 |
---|---|
[게임메이커 강좌-액션][GMS2]봄버맨 만들기-5 : 게임오버와 클리어 (0) | 2022.02.04 |
[게임메이커 강좌-액션][GMS2]봄버맨 만들기-4 : 폭탄 만들기 (0) | 2022.02.03 |
[게임메이커 강좌-액션][GMS2]봄버맨 만들기-3 : 몬스터 만들기 (2) | 2022.02.03 |
[게임메이커 강좌-액션][GMS2]봄버맨 만들기-2 : 이동 (0) | 2022.02.02 |
댓글