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

[게임메이커강좌-기초] 이미지를 부분적으로 잘라서 표시하기

by 타락카얀 2017. 1. 1.
728x90



GAME MAKER 강좌



KAYAN









◈ 이미지를 부분적으로 잘라서 표시하기



이번 강좌에서는 이미지를 부분적으로 잘라 화면에 표시하는 방법에 대해 알아보도록 합시다.

아래 함수는 이미지를 부분적으로 잘라 표시하고자 할 때 사용합니다.


 

draw_sprite_part(sprite,subimg,left,top,width,height,x,y)



이것은 리소스를 실제로 직접 잘라내는 것이 아니라, 화면에 부분적으로 표시만 하는 것입니다.
이 함수는 아래 화면과 같은 형식으로 이미지를 자릅니다.


(▲ draw_sprite_part 함수. left 는 가로 시작 위치, top은 세로 시작 위치)


left 는 잘라낼 이미지의 가로 시작 위치, top 은 이미지의 세로 시작 위치가 됩니다. lefttop

잘라낼 이미지의 기준(중심점)점으로 생각하시면 됩니다..
그리고 width 는 잘라낼 넓이, height 는 높이를 지정하면 되고, (x,y) 는 화면에 표시할 위치를

지정하면 됩니다.


예를 들어 아래 화면과 같은 이미지가 있을 때,



(▲ 잘라내고자 하는 이미지)


이미지에서 잘라낼 위치가 left (기준이 되는 가로 위치)는 210, top (기준이 되는 세로 위치)은 60,

넓이는 62, 높이는 64 만큼 잘라서 오브젝트의 (x,y) 위치에 표시한다면,


 

//스프라이트 이미지 spr_charset, 서브이미지 0 번에서 잘라서 표시할 때,

draw_sprite_part(spr_charset,0,210,60,62,64,x,y)



이와 같이, Draw 이벤트에서 표시할 수 있습니다.
실제로 표시될 때는 이미지에 설정한 중심점이 무시되고, (left,top)이 이미지의 중심점(0, 0)이 됩니다.

이것을 응용하면 아래 화면과 같은 체력 게이지도 표시할 수 있습니다.



(▲ 우측 상단의 체력 게이지)


예를 들어 아래와 같이,


(▲ 체력 게이지 이미지, 위는 뒷배경, 아래는 게이지 부분)


위와 같이 240 x 64 이미지가 있고, 뷰 0번 화면의 (32,16) 위치에 표시하고 싶다면,


 

//spr_hp 가 체력 게이지 이미지이고, 뒷 배경은 서브이미지 0번, 게이지 부분은 1번이고,

//게이지 부분에 좌우 각각 3픽셀씩 빈공간이 있는 이미지 일 때,

//뒷 배경
draw_sprite(spr_hp,0,view_xview[0]+32,view_yview[0]+16);



//게이지 부분
w=234;//넓이, 빈공간은 제외, 좌 3픽셀, 우 3픽셀
h=64; //높이
p=hp*w*(1/hp_max);
draw_sprite_part(spr_hp,1,3,0,p,h,view_xview[0]+32+3,view_yview[0]+16);
//왼쪽이 기준이 되므로, 왼쪽 빈공간 3픽셀부터 시작

※ 게이지 표시 : 변수값 X 그려야할 픽셀 크기 X (1/ 변수 최대값)



이와 같이 draw_sprite_part 함수에서 width 부분을 조절하면 체력 게이지처럼 표시할 수 있어요.
체력 게이지 이미지 증감 부분에 빈공간이 있을 때, 그 위치를 제외하면, 좀 더 정확하게 표시할 수 있습니다.


300x250

댓글