D2D와 게임엔진

[D2D 게임만들기 7] - 애니메이션(후순위라고 생각)

햄시나 2025. 4. 10. 17:51

캐릭터의 이동을 할 수 있고, 상호작용이 가능하다면 그것으로 이미 충분한 게임의 형태를 갖추고 있다.

하지만... 포기할수가 없었다..

 

내가 습작으로 하려는 BubbleBobble에 필요한 이미지를 다운로드 받으면, 보통 하나하나의 이미지가 아니라,

이런식으로 이미지가 함께 뭉쳐져서 있는걸 다운받게 된다.

위의 이미지는 내가 그 중에서도 나름 하나의 행동에 필요한 애니메이션으로 단락을 잘라내고, 배경색을 투명하게 바꾼 상태다.

 

일단 이미지를 불러오자.

전에 만들었던 Resource를 상속받아서 이미지 리소스용 Texture 클래스를 만들어준다.

Load함수 부분만 신경써서 비트맵 로드를 정의해준다.

 

Texture는 뭐든지 이미지이기만 하면 Load할수있는 능력이 있지만, 지금 내가 필요한것은 위의 이미지를 하나하나 끊어서 저장해야한다는 것이다.

그러기 위해 이미지를 묶어놓기 위한 Animation 리소스 클래스를 만들것이다.

이미지에서 하나씩 떼어놓고 저장해두기 위한 구조체를 먼저 만든다.

이 구조체는 어디서부터 어디까지 그려낼 것인지에 대한 값과 재생되는 속도를 저장하기 위함이다.

이 프레임의 묶음은 하나의 애니메이션을 구성한다.

 

Animation 클래스에서 CreateAnimation이란 함수로 위 m_animationSheet를 채워준다.

그리고 그것을 한 프레임씩 Render시키고, 한 프레임씩 Update시켜주면 완성이다.

그러면 Animation 클래스는 무엇인가?

이 클래스도 Texture 클래스와 마찬가지로 리소스에 불과하다.

그래서 이 애니메이션 리소스를 컴포넌트로서 게임오브젝트에 붙여줄 연결고리가 필요하다.

그것의 이름은 Animator로 하겠다.

 

Animator는 Animation들을 들고있다.

하나의 오브젝트가 여러 애니메이션을 수행할 수도 있기 때문이다.

그래서 맵에 저장하고 찾는 기능과 현재 재생되어야하는 애니메이션을 지정해주는 기능이 있다면 충분할것 같다.