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

[게임메이커강좌-기초]스프라이트 애니메이션

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



GAME MAKER 강좌



KAYAN




아래와 같이 애니메이션이 있는 스프라이트를 게임 상에 재생하는 방법에 대해 알아봅시다.



(▲애니메이션 이미지)








◈ 스프라이트 애니메이션 재생



스프라이트 애니메이션 재생은 간단합니다.
애니메이션이 있는 스프라이트를 오브젝트에 지정하고, 룸에 배치하면 됩니다.



(▲ 애니메이션 스프라이트를 오브젝트에 지정)


간단하죠.
하지만 스프라이트의 애니메이션은 룸의 속도에 영향을 받기 때문에 게임 상에서 스프라이트의 재생이

빠를 수 있습니다.

예를 들어 룸의 속도가 60이고, 프레임 수(서브 이미지 수)가 10이라면 실제 게임에선 체감 상

빠르게 재생될 것입니다.

이런 경우 아래의 내장 변수로 재생 속도를 조절해주어야 합니다.

     image_speed=재생 속도

image_speed를 사용하면 재생 속도를 조절할 수 있습니다. 기본값은 1이고, 좀 더 느리게 하려면

0~1사이의 소수 값을 지정하여 느리게 재생시키고, 1보다 크게 설정하면 빠르게 재생됩니다.

또한 게임메이커에는 이 스프라이트 애니메이션이 끝났을때 특정 이벤트를 실행할 수 있는 기능도

있습니다.
이벤트 메뉴OtherAnimation End 이벤트를 사용하면 애니메이션이 끝났을 때 해당 이벤트를

실행할 수 있지요.



(▲ 스프라이트 애니메이션이 끝났을때 실행되는 Animation End 이벤트)


예를 들면 애니메이션이 끝났을 때, 해당 인스턴스를 파기한다던가, 아니면 어떠한 변수 변경들을

할 수 있겠지요.

당연한 이야기이지만, 이 Animation End 이벤트는 오브젝트 Sprite에 지정한 스프라이트의 재생이

끝났을 때 실행됩니다.








◈ Draw 이벤트



Draw이벤트가 활성화되면 지정한 스프라이트가 보이지 않게 되는 경우가 있습니다.
이럴때는 Draw 함수로 스프라이트를 따로 그려주어야 합니다.

     draw_sprite(스프라이트,서브이미지,x,y)

스프라이트에는 Draw 이벤트에서 표시할 스프라이트를 지정하면 되고, 서브이미지는 스프라이트의

서브이미지를 지정하면 됩니다.
애니메이션을 재생할 때는 -1값을 지정하고 개별 이미지인 경우 해당 서브 이미지 번호를 지정하세요.

코드로 작성하자면,



     ★ Draw 이벤트

     draw_sprite(sprite_index,-1,x,y);



이렇게 작성할 수 있지요.
sprite_index는 현재 오브젝트에 지정된 스프라이트를 말합니다.

[참고] 재생에 관련된 변수
     sprite_index : 오브젝트에 지정된 스프라이트
     image_speed : 재생 속도
     image_index : 재생 중인 현재 서브이미지 번호
     image_number : 스프라이트의 서브이미지 수


Draw 이벤트에서 스프라이트 애니메이션을 재생할 때는, 오브젝트에 지정된 스프라이트의 서브 이미지 수만큼

재생됩니다.



(Draw이벤트에서 재생되는 스프라이트는 오브젝트 Sprite에 지정된 스프라이트 서브 이미지 수 만큼 재생함)


만약 Draw 이벤트에서 재생할 스프라이트의 이미지 수가 오브젝트 Sprite에 지정한 스프라이트 이미지 수보다

작으면 그 만큼만 재생하게 됩니다.

그러면 Draw 이벤트에서 모두 재생되지 않고, 일부만 재생되겠지요.

예를 들어 Draw 이벤트에서 재생할 이미지 수가 5이고, 오브젝트에 지정한 스프라이트의 수가 3이라면,

실제 재생되는 이미지는 3장만 재생되게 됩니다.

그렇기 때문에 재생할 스프라이트의 서브 이미지 수가 오브젝트에 지정된 스프라이트의 서브이미지 수와

같은지 확인해야 모두 재생되겠지요.





300x250

댓글