애니메이터(Animator)란?

애니메이션 클립의 모든 것

Karo
Supercent Blog 슈퍼센트 블로그
10 min readAug 21, 2023

--

애니메이터(Animator)란?

애니메이터(Animator)는 유니티에서 제공하는 애니메이션 시스템 중 하나인 메카님(Mecanim)이라고 불리는 시스템의 핵심 컴포넌트입니다. 유니티 문서를 보면 메카님 시스템은 다음과 같은 기능들을 제공한다고 합니다.

  • 쉬운 워크플로 및 오브젝트, 캐릭터, 프로퍼티 등 Unity의 모든 요소에 대한 애니메이션 설정
  • 임포트된 애니메이션 클립과 Unity에서 생성된 애니메이션 지원
  • 휴머노이드 애니메이션 리타게팅
  • 특정 캐릭터 모델의 애니메이션을 다른 캐릭터 모델에 적용
  • 애니메이션 클립의 위치를 조정하는 단순화된 워크플로
  • 애니메이션 클립, 전환, 상호 작용에 대한 편리한 미리보기 기능이 탑재되어 있습니다. 이로 인해 애니메이터의 작업을 프로그래머와는 더 독립적으로 진행할 수 있으며, 게임 플레이 코드 구현을 기다릴 필요없이 사전에 프로토타입을 만들고 애니메이션을 미리 볼 수 있습니다.
  • 비주얼 프로그래밍 툴을 이용하여 애니메이션 사이의 복잡한 상호작용 관리
  • 서로 다른 로직을 이용하여 각각 다른 신체 부위 애니메이션화
  • 레이어링 및 마스킹 기능

메카님 애니메이션 시스템은 위와 같이 다양한 기능들을 제공하고 있습니다. 이번 포스팅에서는 가장 기본적인 사용 방법 및 애니메이션 클립에 대해 이야기 해보고자 합니다.

레거시(Legacy)라고 칭하는 구 애니메이션 시스템 또한 존재하지만, 이번 포스팅에서는 다루지 않을 예정입니다.

애니메이터는 어떻게 사용할 수 있는가?

애니메이터를 사용하기 위해서는 아래의 3가지 준비되어야합니다.

  • 애니메이션을 실행하는 주체가 될 게임 오브젝트(GameObject)
  • 실행하고자 하는 애니메이션 클립(Animation Clip)
  • 각종 애니메이션 상태 및 전환 정보를 가지고 있는 애니메이터 컨트롤러(Animator Controller)

필요한 것들이 모두 준비되었다면 아래와 같은 순서를 통해서 특정 게임 오브젝트를 애니메이션 시킬 수 있습니다.

  1. 프로젝트 뷰에서 마우스 우클릭을 통해 애니메이터 컨트롤러 생성
  2. 프로젝트 뷰에서 마우스 우클릭을 통해 애니메이션 클립 생성
  3. 편집하고자 하는 애니메이터 컨트롤러를 더블 클릭
  4. 실행하고자 하는 애니메이션 클립을 드래그 & 드랍을 통해 애니메이터 뷰에 추가
  5. 씬에 배치된 특정 게임 오브젝트에 애니메이터 컴포넌트 추가
  6. 1번 과정에서 생성한 애니메이터 컨트롤러를 애니메이터 컴포넌트에 연결
  7. 게임 시작

여기까지 따라 하셨다면 게임 실행 시 특정 게임 오브젝트가 방금 추가한 애니메이션 클립을 재생하는 상태가 되었습니다. 하지만 아무런 정보가 없는 빈 애니메이션 클립이 실행되기 때문에, 사실 아무런 변화도 발생하지 않습니다. 그렇다면 다음으로 애니메이션 클립을 편집하는 방법에 대해 알아보겠습니다.

애니메이션 클립을 편집하는 방법은?

애니메이션 클립을 편집하기 위해서는 애니메이션 뷰를 열어야 합니다. 애니메이션 뷰를 여는 방법은 다음과 같습니다.

  • 애니메이션 클립을 더블 클릭해서 열기
  • Window → Animation → Animation을 통해 열기
애니메이션 뷰를 여는 방법

위의 방법을 통해 애니메이션 뷰를 열게 되면 아래와 같은 화면을 확인하실 수 있습니다.

애니메이션 뷰

애니메이션 뷰는 크게 좌측의 프로퍼티 영역과 우측의 타임라인 영역으로 나눌 수 있습니다.

프로퍼티 영역이란?

프로퍼티 영역은 해당 애니메이션 클립이 제어하는 게임 오브젝트와 그 하위 게임 오브젝트들이 가진 컴포넌트에 대한 프로퍼티의 목록입니다. 애니메이션 클립을 통해 제어하고자 하는 모든 프로퍼티을 해당 목록에 추가해야 합니다.

프로퍼티는 해당 목록의 하단에 출력되는 Add Property 버튼을 통해 추가할 수 있으며, 뒤에서 추가로 알려드릴 녹화를 통해서도 추가할 수 있습니다.

애니메이션 프로퍼티 추가 예시

애니메이션 클립에 프로퍼티를 추가하기 위해서는 해당 애니메이션 클립이 사용되는 게임 오브젝트가 선택된 상태여야만 합니다.

또한, 추가가 가능한 프로퍼티는 해당 게임 오브젝트를 포함해서 하위의 게임 오브젝트들에 포함된 프로퍼티들만 가능합니다. (부모의 프로퍼티는 추가할 수 없습니다.)

타임라인 영역이란?

타임라인 영역은 추가된 프로퍼티 들을 세부적으로 특정 시점에 어떤 값을 가지게 할 것 인지를 편집할 수 있는 영역입니다. 유니티에서는 해당 영역의 단위를 키 프레임(Key Frame)이라고 지칭하며 키 프레임별로 프로퍼티의 값을 지정할 수 있는 키(Key)를 추가할 수 있습니다.

각 프로퍼티에 대한 키를 추가하는 방법과 애니메이션을 미리 확인하는 방법 등을 포함해서 트랜스폼(Transform)을 조절하는 간단한 애니메이션을 만들어 보겠습니다.

애니메이션 타임라인 영역 편집 예시

위 영상에서 알 수 있듯이 키와 키 사이의 비어있는 키 프레임이 존재할 경우에는 두 키의 값을 보간하면서 자연스럽게 프로퍼티의 값이 변화하는 것을 확인할 수 있습니다. 즉, 구태여 모든 키 프레임에 키를 추가할 필요는 없다는 말 입니다.

타임라인 영역을 마우스 휠 업 & 휠 다운을 통해 확대, 축소가 가능합니다.

*보간(Interpolation)이란 이미 주어진 값들 사이에 위치한 값을 주어진 값을 기반으로 추정하는 것을 의미합니다

녹화 기능이란?

녹화 기능은 프로퍼티나 키를 추가할 필요 없이 직접 특정 키 프레임에서 원하는 컴포넌트의 값을 변경하면 관련 정보가 애니메이션 클립에 기록되도록 하는 기능입니다.

글로만 봐서는 이해가 되지 않을 수 있으니, 영상을 통해서 직접 관련 기능을 안내드리겠습니다.

애니메이션 녹화 기능 사용 예시

녹화 기능은 매우 편리한 기능이지만 테스트를 할 때에는 유의할 필요가 있습니다. 녹화 기능을 활성화한 상태에서 다른 컴포넌트들의 값을 수정할 경우 의도치 않게 관련 기록들이 녹화될 수 있기 때문입니다.

또한, 휴머노이드 타입의 캐릭터 애니메이션의 경우에는 녹화 기능을 사용할 수 없습니다.

자동으로 보간해주는 값들은 어떻게 수정할 수 있는가?

앞서 언급한 것 처럼 유니티에서는 키와 키 사이에 공백이 존재할 경우 자동으로 두 키 값을 보간해줍니다. 그로 인해서 모든 키 프레임에 키를 추가할 필요 없이 편하게 작업을 할 수 있습니다. 하지만 그런 보간을 바라지 않거나 혹은 보간되는 방식을 변경하고 싶은 경우가 있을 수 있습니다.

애니메이션 뷰의 프로퍼티 영역의 하단을 확인해 보면 DopesheetCurves라는 탭을 확인할 수 있습니다. 위에서 설명한 키 추가 및 수정 방식은 Dopesheet방식이며 Curves를 선택할 경우 보간이 어떤 식으로 이루어지는 지를 확인할 수 있습니다.

유니티에서는 일반적으로 베지어 곡선을 사용해서 커브를 표현하고 있으며 타임라인 영역에 표현되는 키를 선택하면 곡선의 기울기를 설정할 수 있습니다. 또한, 우클릭을 통해 커브의 설정을 변경할 수 있습니다.

그렇다면 이 커브를 편집하면 어떤 변화가 발생하는지 영상을 통해 확인해 보도록 하겠습니다.

애니메이션 커브 수정 예시

유니티의 커브 편집은 위의 애니메이션 클립 뿐 아니라 다양한 시스템에서 동일한 방법으로 사용되고 있습니다. 관련해서 좀 더 자세히 알고 싶다면 여기를 클릭해 주세요.

확인하고 싶은 다수의 키를 선택한 후 키보드의 “F”를 입력하면 선택된 키들이 한 화면에 나오도록 확대 배율 및 위치를 자동으로 조정해 줍니다.

애니메이션 클립을 변경하는 방법은?

애니메이터 컨트롤러에는 다양한 애니메이션 클립을 추가할 수 있습니다. 만약 특정 애니메이터 컨트롤러가 적용된 캐릭터에 다양한 애니메이션 클립들을 실행시켜 보고 싶다면, 애니메이션이 실행되는 게임 오브젝트를 선택한 후 애니메이션 뷰의 프로퍼티 영역 상단의 드롭 다운을 통해 애니메이션 클립을 변경할 수 있습니다.

애니메이션 클립 변경 예시

다만, 반드시 해당 애니메이터 컨트롤러를 사용하고 있는 게임 오브젝트를 선택해야만 애니메이션 클립을 변경하거나 미리 실행해 볼 수 있습니다.

또한, 애니메이터 컨트롤러에 추가된 애니메이션 클립들만 드롭 다운에 출력됩니다.

애니메이션 이벤트란?

게임을 제작하다 보면 특정 애니메이션이 일정 프레임에 도달한 타이밍을 알고 싶은 경우가 있을 수 있습니다. 해당 타이밍을 확인하는 방법에는 여러 가지가 존재하는 데, 그 중 하나가 애니메이션 이벤트입니다.

애니메이션 이벤트는 원하는 키 프레임을 선택한 후 애니메이션 이벤트 추가 버튼을 클릭하거나 키 프레임 눈금의 바로 밑 부분을 우클릭해서 추가할 수 있습니다.

애니메이션 이벤트 추가 예시

애니메이션 이벤트는 해당 애니메이션 클립이 포함된 애니메이터 컴포넌트를 가지고 있는 게임 오브젝트에 있는 컴포넌트들의 public 함수를 호출할 수 있습니다. 이때, 해당 메서드가 가질 수 있는 파라미터는 최대 1개로 제한되며 파라미터의 타입은 아래의 타입을 사용해야만 합니다.

  • int
  • float
  • string
  • Object
애니메이션 이벤트 연동 예시

단, 해당 부분이 실행되지 않고 애니메이션이 종료되거나 해당 부분을 건너뛰고 애니메이션이 실행되는 경우에는 스킵 된 프레임의 애니메이션 이벤트는 실행되지 않습니다.

끝맺음

오늘은 유니티에서 자주 사용되는 애니메이터를 활용하기에 앞서, 애니메이션 클립을 생성하거나 수정하는 방법에 대해 알아보았습니다. 애니메이터는 3D 캐릭터뿐만 아니라 2D 캐릭터나 UI 등 다양한 상황에 사용될 수 있으며, 게임 제작 과정에서 거의 필수적으로 사용되는 요소 중 하나입니다.

다만 이번 포스팅 만으로는 애니매이터에 대한 내용을 모두 담아내기 어려워, 2편으로 나누게 되었습니다. 2편에서는 본격적으로 애니메이터 컨트롤러를 편집하는 방법에 대해 알려드릴 예정입니다.

부디 이번 포스팅이 애니메이터를 처음 접하신 분들 뿐만 아니라 기존에 사용하고 계셨던 분들께도 도움이 되었으면 좋겠습니다.

<유니티 기본기 시리즈 전체 보기>

더 많은 하이퍼 캐주얼 게임 개발 팁을 알고 싶으신가요?
지금 바로
여기를 클릭해서, 슈퍼센트의 파트너가 되어 보세요!

[Contact]
- E-mail: help@supercent.io
- Homepage:
corp.supercent.io

--

--