모바일 디펜스 게임으로 배우는 Unity 기초 강좌의 맛보기 강의입니다.
이번 시간에 공부할 내용은 애니메이션 시스템입니다. 대부분의 게임은 다양하고 화려한 애니메이션 효과를 가지는데요. 다행스럽게도 unity는 꽤 훌륭한 애니메이션 시스템을 지원하고 있습니다. 우리는 이번 시간에 그러한 구조를 이해해보고 어떻게 sprite가 애니메이션을 보여 줄 수 있는지 그런 구체적인 방법에 관해서도 공부하게 될 겁니다. 일단 저처럼 이렇게 완전히 새로운 프로젝트를 만들어 봅시다. 저는 이름을 Practice 4-1이라고 지어 보았어요. 이렇게 강의자료로 제공해드린 폴더를 보시면요. monster_walk라는 unity 패키지가 있습니다. 이를 unity 프로젝트로 drag & drop 해 주도록 할게요. 그러면 자동으로 Sprites 폴더와 Animations 폴더가 생성되는 것을 확인할 수가 있어요. 먼저 Sprites 폴더로 이동을 해 보시면요. 비슷한 몬스터 이미지들이 많이 있는 것을 확인할 수가 있습니다. 비슷하게 생긴 것들이 많이 존재하죠. 이 중에서 우리가 계속해서 써 왔던 Monster_1 이라는 이름의 sprite로 object를 생성해 보도록 할게요. 이제 이 object에 Scale은 0.5, 그리고 0.5로 설정해서 조금 작게 잘 보일 수 있도록 만들어 줄게요. 그리고 나서 다른 sprite로 한 개씩 살펴보시면요. 조금씩 이 생긴 것이 다르다는 것을 알 수 있습니다. Unity 2D 게임에서 애니메이션은 대부분 이렇게 sprite를 단순하게 서로 바꿔 주는 방식으로 동작을 한답니다. 그래서 보통 어떤 동작을 애니메이션으로 표현하고자 할 때는 여러 개의 sprite 이미지를 연속적으로 보여 줘야 되기 때문에 여러 개의 sprite 이미지가 필요해요. 그래서 이렇게 비슷하지만, 명백히 구분되는 여러 가지의 이미지를 미리 제공해드린 겁니다. 정확히 어떻게 사용하는지에 대해서는 차후 설명해 드리도록 할게요. 그러고 나서 바로 Animations 폴더로 가보시면 아직 안 배웠지만 이렇게 몬스터 컨트롤러라는 것이 있고요. 그리고 monster walking 이라는 애니메이션 파일이 존재하는 걸 확인할 수가 있습니다. 이번 시간에는 이런 것들을 만들어본다기 보다는 이미 만들어진 파일들로 unity의 애니메이션 시스템을 이해해보는 시간을 가져 볼 거예요. 그러니까 큰 부담 없이 가볍게 잘 살펴보시면서 그냥 따라오시면 큰 문제 없을 겁니다. unity 애니메이션은 기본적으로 한 object 단위로 적용이 됩니다. 한번 이 그래프를 위에서부터 살펴보도록 할게요. 특정한 object가 있을 때 거기에 애니메이션을 넣고 싶다면 먼저 Animator Component를 추가해 줘야 해요. 말 그대로 하나의 component에요. 이렇게 object에 Animator Component를 추가해준 이후에는 어떤 상황에서 어떤 애니메이션을 보여 주겠다. 이것을 결정하기 위해서 Animator Controller를 추가합니다. 눈썰미가 좋으신 분들은 아까 전에 우리 프로젝트 안에 있던 거랑 뭔가 똑같은 아이콘인 것을 눈치를 채셨을 건데요. 이것이 바로 애니메이터 컨트롤러라고 할 수 있는 겁니다. 그렇다면 실질적으로 우리에게 보여질 애니메이션은 무엇일까요? 바로 이 Animation Clip입니다. 하나의 몬스터는 뛰는 애니메이션, 공격하는 애니메이션 등의 여러 개의 애니메이션을 들어갈 수 있기 때문에 그러한 애니메이션을 각각 애니메이션 클립이라는 것으로 정의를 해 주는 거예요. 결과적으로 하나의 Animation Clip은 여러 개의 sprite가 연속적으로 보이는 형태가 된다고 할 수 있습니다. 아닌 경우도 있지만 많은 경우에는 이렇게 2D 게임에서 이런 방식으로 보여 주는 것이 굉장히 일반적이라고 할 수 있습니다. 먼저 상단의 Window 버튼을 눌러서 Animation의 Animation 탭을 열어주도록 하고요. 결과적으로 이렇게 아래쪽으로 넣어서 잘 보일 수 있도록 만들어 주시고 마찬가지로 Animation의 Animator 탭 또한 가져올 수 있도록 합니다. 그럼 이렇게 지금까지는 쓰지 않았던 두 개의 view가 등장한 것을 알 수가 있어요. 다시 이렇게 Project view로 돌아가서 sprites 폴더에서 Monster_1이라는 이름을 가진 sprite를 아까 전에 드래그 앤 드롭해서 만들어 줬잖아요. 이제 이 상태에서 object가 한 개 존재하는 것이기 때문에 가장 먼저 뭘 하면 된다고 했었죠? 아까 전에 말씀드렸던 것처럼 Animator component를 추가를 해줘야겠죠. 바로 이렇게 Animator component를 넣어 주시면 됩니다. Animation이 아니라 Animator예요. 이렇게 Animator component를 추가하고 나서 보면 이렇게 inspector view에서 Animator component 부분에 Controller가 비어 있는 걸 확인할 수가 있어요. 이제 이 부분에 아까 전에 import를 했었던 이 Monster_1의 애니메이션 컨트롤러를 드래그 앤 드랍해서 놓아주면 됩니다. 한번 놓아보도록 할게요. 이렇게 적용을 해 주면요. Animator View로 이동을 했을 때, 이렇게 Animator View에서 살펴보시면요. Any State 그리고 Entry라는 것이 존재하는 걸 확인할 수 있는데요. 이후에 이렇게 Monster_1_walking이라는 Animation Clip이 존재하는 걸 확인할 수가 있습니다. 만약에 이게 없으신 분들이라면 여기서 Monster_1_walking 애니메이션 클립을 그대로 드래그 앤 드랍해서 이렇게 놓아 주시면 돼요. 그래서 결과적으로 이렇게 Entry에서 Monster_1_walking으로 넘어갈 수 있도록 이러한 구조가 눈에 보이는 것을 확인할 수가 있습니다. 한번 애니메이션이 잘 적용되었는지 확인하기 위해서 이렇게 Game View로 가서 게임 실행 버튼을 눌러서 몬스터가 움직이는지 확인해 보도록 할게요. 그랬더니 이렇게 잘 걸어가는 것을 확인할 수가 있습니다. 계속 이 상태에서 Animator View를 보시면요. Entry, Any State, Monster_1_walking이 네모난 상자 모양으로 존재하는 걸 확인할 수 있는데요. 이 상자 하나하나가 전부 다 애니메이터 컨트롤러가 다루는 state, 즉 애니메이션 클립이라고 이해를 하시면 되는 거예요. 즉, object와 Animator component와 그리고 애니메이터 컨트롤러와 애니메이션 클립까지 이렇게 여러 가지로 구성이 되어 있는 이런 구조를 잘 이해 하시는 것이 굉장히 중요하다고 할 수 있어요. 다음 시간에는 애니메이션 클립들을 직접 만들어 보는 시간을 가져 볼 건데요. 이번 시간에는 이렇게 애니메이션이 적용되는 구조 자체만 바르게 이해를 하시면 충분할 것이라고 생각합니다. 이해를 돕기 위해서 다시 한번 더 띄워 드렸습니다. 애니메이션을 넣기 위해서는 object에 Animator Component를 적용하고 이제 여기에 Animator Controller를 넣는 겁니다. 그리고 컨트롤러는 어떠한 애니메이션 클립이 언제 나오고, 얼마나 부드럽게 나오는지 등을 결정할 수 있는 거고요. 그러한 애니메이션 클립들은 아직 저희가 직접 만들어 보지는 않았지만 보통 여러 개의 sprite로 이루어진다는 점만 이해를 잘하시면 큰 문제가 없을 겁니다. 이번 시간에는 이렇게 애니메이션 시스템에 대한 전반적인 개요에 대해서 공부를 해 보는 시간을 가져보았습니다. 다음 시간에는 직접 다양한 애니메이션을 만들어 보는 방법에 대해서 알아보도록 할게요.
