티스토리 뷰
Today I Learned - Day 19 [Animator Override Controller]
불면증 도사 2024. 10. 10. 21:06유니티에서 애니메이션 작업은 기본적으로 일단 적용한 뒤, 자신이 원하는 대로 깎는 작업이다.
다르게 말하면 품이 많이 드는 작업으로, 애니메이션 작업의 거의 대부분은 구상이나 개발 보다는 수작업에 가깝다.
이런 상황에서 생각하게 된 것이 '방식이 동일하다면, 그냥 스프라이트만 바꿔 끼면 될텐데.'였다.
마침 강의에서 간략하게나마 설명을 듣기도 해서, 일단 무작정 달려들어 보았다.
Animator Override Controller?
아마 Unity에 익숙하지 않다면 처음 듣는 단어일 것이다. 실제로 본인도 그러했다.
Animator Override Controller를 간단하게 말하면, 그냥 이름 그대로다.
[실제 작동이 아닌, 이해를 위한 글임을 양해 바란다.]
- Animator는 Animation의 흐름을 정리하는 요소다.
- Controller는 Animator에서 정의된 흐름을 구현하는 요소다.
이 두 단어 사이에 Override가 들어갔듯이, Animator의 형식은 유지한 채 내용을 Override, 즉 애니메이션 클립을 덮어 씌워서 작동하는 Controller다.
간단한 개념을 살펴봤으니, 이제 사용법을 알아보자.
Animator Override Controller 사용법
Animator Override Controller 파일 생성 - Animator Controller 할당 - Animation 덮어쓰기의 3가지 단계로 나뉜다.
Animator Override Controller 파일 생성

Animator Override Controller 파일의 생성 방법 자체는 매우 쉽다.
그냥 Project 창에서 빈 칸(혹은 폴더)에 우클릭 - Create - Animator Override Constroller를 생성하면 된다.
다만, Animator Override Controller에 Animator Controller 원본을 할당해야 하므로 Animator Controller를 생성, 제작하고 Animation을 충분히 형성한 뒤에 작업해야 전체적으로 편할 것이라는 점에는 주의할 것.
Animator Controller 할당

Animator Override Controller가 생성되었다면, 원본이 되는 Animator Controller를 Controller 항목에 할당해 준다.
할당이 되었다면, Animator의 Animation State 별로 Animation을 할당하는 칸이 추가로 표시된다.
Animation 할당하기
Animation Override Controller 자체가 단순 클립 변경을 통해서 애니메이션을 편하게 두는 게 목적인지라 Inspector와 script를 통한 조절법 양쪽을 모두를 꽤 잘 활용하는 편이다.
그러므로 양쪽을 모두 정리하겠다.
Inspector

[위에 사진이랑 똑같아 보인다면, 그건 정답이다.]
Inspector는 간단하게 애니메이션 클립을 끼워넣기만 하면 된다.
애니메이션 스테이트가 목표로 하는 상태가 맞는지 확인하면서 끼울 것.
번외. 스크립트에서 바꾸는 방법에 대하여.
Animator animator.runtimeAnimatorController = animatorOverrideController
위 코드를 사용하면 실행 도중에 애니메이션을 변경할 수 있다.
사실, 실행 도중인 애니메이터 컨트롤러를 변경하는 코드이기 때문에 animatorOverrideController가 아니더라도 적용 자체는 가능할 것으로 보인다. [그럴 필요가 없을 뿐...]
이러한 방식으로 작업할 경우, 캐릭터나 몬스터 별로 애니메이션을 따로 짤 필요 없이 대표군 만 만들어 놓고 애니메이션 클립 만 바꿔서 구성하면 된다. 애니메이션 파라미터를 이용해서 속도를 조절한다거나 하는 세부적인 차이점을 구사할 수도 있어서, 애니메이션에 한정되어 있긴 하지만, 이런저런 연출에 유용하게 쓸 수 있지 않을까 싶다.
물론, 너무 복잡하거나 너무 다르다면 그냥 Animator로 수동 조정이 더 나을수도 있으니, 이 점은 유의해야 할 것이다.
'스파르타 내일배움캠프 > Today I Learned' 카테고리의 다른 글
Today I Learned - Day 21 [메모리 구조에 대하여] (0) | 2024.10.14 |
---|---|
Today I Learned - Day 20 [스크롤뷰] (0) | 2024.10.11 |
Today I Learned - Day 18 [Sprite 심화 기능에 대하여] (3) | 2024.10.08 |
Today I Learned - Day 17 [Quaternion] (0) | 2024.10.07 |
Today I Learned - Day 16 [파일 구성 설계법에 대하여] (4) | 2024.10.04 |