본문 바로가기
GameMaker강좌[GMS2]/예제모음

[GMS2 예제] 한개의 캐릭터셋 이미지로 8 방향 애니메이션 표시 예제

by 타락카얀 2022. 1. 13.
728x90

 

 

 

 

제목은 8방향이지만, 4방향도 되고, 16방향 이상도 가능합니다.

하나의 캐릭터 셋에서 여러 방향의 캐릭터 애니메이션을 표시하는 예제입니다.

 

스프라이트 이미지를 구성할 때 방향은 세로 순으로, 애니메이션 모션은 가로 순으로 구성합니다.

애니메이션 재생 순서는 캐릭터 셋 이미지에서 가로로 0 ▶ 1 ▶ 2 ▶ 3 ▶ ... 애니메이션 순으로

재생됩니다.

 

(▲ 애니메이션 이미지 구성)

 

방향은 게임메이커의 방향(direction) 설정대로 반시계 방향입니다. 즉, 첫번째 방향은 오른쪽(0)

향합니다.

 

 

이미지는 아래의 스크립트로 표시할 수 있습니다.

 

     ◎ draw_ani_part_ext(cellwidth,cellheight,_x,_y,spr,subimg,dir,frame,dir_part,col,alpha)

 

 

     - cellwidth : 캐릭터 이미지의 넓이

     - cellheight : 캐릭터 이미지의 높이

     - (_x,_y) : 표시위치

 

     - spr : 표시할 스프라이트를 지정

     - subimg : 스프라이트에서 캐릭터 셋이있는 서브이미지 번호

 

     - dir : 이미지의 방향(direction으로 이동할 경우 direction으로 해도 됩니다.)

 

     - frame : 현재 애니메이션의 프레임 번호(가로순)입니다.

 

     - dir_part : 이미지가 몇개의 방향으로 구성(세로순)되어있는지 지정합니다.

                    4방향이면 4, 8방향이면 8로 지정합니다.

 

     - col : 이미지의 색상을 지정합니다.

     - alpha : 이미지의 투명도를 지정합니다.

 

 

애니메이션 재생은 아래 스크립트로 재생시킬 수 있습니다.

 

 

     init_part_animate( ) : 애니메이션 초기화 스크립트. Create 이벤트에서 사용.

 

     play_part_animate(animate_max, animate_speed) : 애니메이션 재생 스크립트.

 

     - animate_max : 재생할 애니메이션이 몇개로 구성(가로순)되어있는지 지정합니다.

     - animate_speed : 애니메이션의 재생 속도입니다.

 

     animate : 현재 애니메이션 프레임 변수

 

 

사용 예) 스프라이트 : spr_sorceress_8 , 방향: 8 방향, 최대 프레임 : 8 개

 

(▲ 표시할 이미지 예)

 

 


     ★ Create 이벤트

     init_part_animate( );//애니메이션 초기화


     ★ Step 이벤트

     play_part_animate(8,0.3);//총 8 프레임의 애니메이션을 0.3 속도로 재생




     ★ Draw 이벤트

     var _x,_y;
     _x=x-sprite_get_xoffset(sprite_index);
     _y=y-sprite_get_yoffset(sprite_index);


     draw_ani_part_ext(61,76,_x,_y,spr_sorceress_8,0,direction,animate,8,c_white,1);


 

 

sprite_part_animate.yyz
1.10MB

 

 

 

 

 

 

300x250

댓글