본문 바로가기
GameMaker강좌[GM8]/기초강좌

[게임메이커강좌-기초]체력바 표시

by 타락카얀 2013. 12. 31.
728x90



GAME MAKER 강좌



KAYAN




유닛들의 체력바를 표시하는 방법에 대해 알아보도록 합시다.








◈ 체력바



먼저 게임메이커에서 기본적으로 지원되는 체력 변수인 health 를 표시하는 방법에 대해 알아봅시다.



(▲ health 변수를 이용한 체력 표시)


health는 게임메이커에 내장된 전역 변수(global변수)중 하나입니다.
Score 탭HealthDraw Health 액션을 사용하면 health변수를 바 형태로 표시할 수 있습니다.



(▲ Draw Health 액션)


사각형을 그릴 때 표시되는 좌표는 아래와 같은 원리로 표시합니다.



(▲ 표시 좌표)


(x1,y1) 좌표와 대각선에 있는 (x2,y2) 좌표를 꼭지점으로 하는 사각형 모양으로 표시합니다.
     x1, y1 : 사각형을 표시할 시작점
     x2, y2 : (x1, y1)좌표로부터 대각선에 있는 꼭지점
     back color : 뒷배경
     bar color : 체력바 색상. 기본값 green to red(녹색에서 빨간색으로 변함)

Draw Health 액션으로 나타낼 수 있는 health 값은 0~100까지의 값만 표시할 수 있습니다.
물론 변수의 값은 0~100의 값을 벗어날 수 있지만, health를 화면에 표시하는 액션은 0~100으로 제한됩니다.


[참고]
     만약 화면의 뷰가 움직여 뷰에 고정된 좌표에 표시하려면 표시 좌표에 뷰의 좌표(view_xview, view_yview)를
     같이 적용하셔야 합니다.

     예) 0번 뷰에 고정할 경우
     x1 : view_xview[0]+10
     y1 : view_yview[0]+12
     x2 : view_xview[0]+112
     y2 : view_yview[0]+22


Draw Health 액션Relative를 체크하게 되면, 현재 오브젝트의 (x,y)좌표를 기준으로 표시합니다.



(▲ 액션의 Relative 체크. Relative는 해당 액션의 각 좌표에 x, y 값을 더하는 것과 같음.)


이런 식으로 Relative를 체크하면 현재 오브젝트가 위치한 좌표를 기준(x,y 좌표를 기준)으로

아래와 같이 표시되지요.



(▲ 표시 예. Relative를 체크하면 플레이어가 움직이는대로 따라 다니도록 할 수 있음.)


그리고 만약 health 값의 범위가 0~100 보다 크다면 Draw 탭Drawing사각형 그리기 액션들이나

코드로 표시하시면 됩니다.

그리고 health 변수는 전역 변수이기 때문에 1개의 유닛에서만 적용할 수 있습니다.

유닛끼리 공유시킬 것이 아니라면, 위의 방법보다 아래의 방법을 사용해야 서로 중복되지 않고 표시할

수 있어요.



(▲ 사각형 그리기 액션)


Draw Health 액션을 사용하면 지정한 좌표내에 증감이 자동으로 처리가 되지만, 이 액션들로 사용하면

증감 표시를 직접 설정해주어야 합니다.

변수 값에 따라 변하는 증감을 적용하려면, 증감을 적용할 좌표에 아래와 같은 식을 같이 사용하시면

됩니다.

     변수값 X 그려야할 픽셀 크기 X (1/ 변수 최대값)

사용예)

체력 변수인 heath 변수를 사용하여, 변수의 값의 범위 0~100까지를 최대 40픽셀까지 체력바를 화면에

표시할 경우.



     ★ Horizontal Gradient 액션


     x1 : -20
     y1 : -30
     x2 : -20+(health*40*(1/100))
     y2 : -22

     [V]Relative



만약 표시할 체력 변수가 health 변수가 아닌 다른 변수, 예를 들어 hp 라고 했을 때, health 변수대신

hp 변수를 넣으시면 됩니다.

health 변수는 내장 변수이기 때문에, 따로 선언할 필요는 없지만, 사용자가 만든 변수,

예를 들어 hp 라는 변수를 사용하고자 할때는, 변수를 사용하기 전에 Create 이벤트에서 미리 변수를

선언해 주어야 합니다.



     ★ Horizontal Gradient 액션


     x1 : -20
     y1 : -30
     x2 : -20+(hp*40*(1/100))     ◀ health 변수대신 hp변수. 단, 사용하기 전에 Create 이벤트에 hp를 선언해야 함.
     y2 : -22

     [V]Relative



사각형 액션과 같은 코드로는 다음과 같은 함수가 있습니다.

     draw_rectangle(x1,y1,x2,y2,outline)

     x1, y1 : 꼭지점 좌표1
     x2, y2 : (x1, y2)좌표의 대각선에 있는 꼭지점 좌표2
     outline : 외곽선만 표시할 것인지를 지정. true는 외곽선만. false는 면

이 함수는 사각형을 그리는 함수로, 색을 입힐때는 draw_set_color(색)을 사용해야 합니다.


예)




     ★길이는 128픽셀이며 화면의 (10,12)에 표시.
     ★체력은 health변수 사용하고, 체력의 최대값은 100까지일때

     ※ 체력변수가 내장 전역 변수인 health 변수가 아니고, 예를 들어 hp라고 한다면 hp 변수를 넣으면 됩니다.



     draw_set_color(c_blue);
     draw_rectangle(10,12,10+(128),22,0);//파란 배경

     draw_set_color(c_green);
     draw_rectangle(10,12,10+(health*128*(1/100)),22,0);//녹색 체력바

     draw_set_color(c_black);
     draw_rectangle(10,12,10+(128),22,1);//검은색 외곽선



이런 식으로 사용합니다.
이 함수의 확장함수로 다음과 같은 함수를 사용할 수 있습니다.

     draw_rectangle_color(x1,y1,x2,y2,col1,col2,col3,col4,outline)

이것은 draw_rectangle과 사용법이 같으며, 꼭지점 마다 색을 입힐 수 있는 기능이 추가된 함수입니다.





※ [중요]
     Draw 액션이나 Draw 함수들은 Draw 이벤트에서만 작동해요 (서피스 제외).
     Draw 액션이나 Draw 함수는 화면에 표시하기 위한 기능이기에, Draw 이벤트가 아닌 다른 이벤트에서
     이벤트를 작성한 경우 화면에 표시되지 않습니다.





체력예제.gmk




300x250

댓글