본문 바로가기
유니티/기초

유니티 애니메이션(Animation)

by 노튜 2020. 11. 26.
728x90

유니티 애니메이션 

 

유니티 애니메이션 방법은 레거시 애니메이션(Legacy Animation)과 메카님 애니메이션(Mecanim Animation)이 있다.

유니티는 레거시 애니메이션 대신 메카님 애니메이션을 사용할 것을 권장한다. 

 

본 글에서는 메카님 애니메이션에 대하여 다룬다.

 

1. 애니메이션 (Animation Component)

 

레거시 애니메이션(Legacy Animation)에서 애니메이션 클립을 컨트롤하기 위한 컨트롤러이다. 레거시는 과거에 사용한, 이전에 사용한 등의 의미이며, 레거시 애니메이션을 적용한 게임 오브젝트를 사용할 때에 사용한다.  

 

Animation Component



2. 애니메이션 클립(Animation Clip)

 

애니메이션 데이터이다. 캐릭터나 오브젝트는 각각의 애니메이션 상태를 정의한다. 레거시 애니메이션에서는 하나의 데이터로 관리하기도 한다. 어떻게 구현하느냐에 따라 각각의 애니메이션 상태에 대한 정의는 다를 수 있다. 

하나의 애니메이션 상태는 애니메이션 클립으로 정의된다. 애니메이션 상태는 캐릭터를 예를 들어 다음과 같다. 

 

  • Idle : 제자리에 서 있을 때의 애니메이션 
  • Walk : 걷는 애니메이션
  • Run : 뛰는 애니메이션 
  • Jump : 점프 애니메이션
  • Attack : 공격 애니메이션 
  •  Etc …

 

애니메이션 클립은 유니티 상에서 제작할 수도 있으며, 블렌더(Blender), 마야(Maya)와 같은 3D 제작 툴에서 애니메이션을 만들어 유니티로 가져와 사용할 수 있다. 

 

Animation Clip

 

3. 애니메이션 컨트롤러(Animation Controller)

 

애니메이션 컨트롤러는 일종의 게임 오브젝트의 상태에 대한 플로우 차트(Flow-chart)이다. 플로우 차트는 순서도이며, 어떤 일의 흐름을 표현한 것이다. 애니메이션 컨트롤러는 스테이트 머신을 사용하여 애니메이션 상태나 상태 사이의 전환(Transition)을 처리하며, 애니메이션의 설정 및 관리한다. 애니메이션 상태의 전환은 파라미터를 사용한다.   

 

Animation Controller

Entry : 애니메이션 시작

Exit : 애니메이션 종료

Any State :  모든 애니메이션 상태를 나타낸다. Any State → A State는 전체 애니메이션 상태에서 A State로의 전환이 가능하다는 것을 의미한다. 

Default State : 애니메이션이 시작되면 호출되는 기본 애니메이션 상태이다. 이 역시 애니메이션 클립이다.  

Animation State : 애니메이션 클립이며, 애니메이션 상태이다. 

 

3.1 트랜지션(Transition)

애니메이션 상태 간의 전환이 이루어지는 것을 나타내며, 트랜지션이 없는 애니메이션 상태로는 전환이 가능하지 않다. 파라미터(Parameter)의 값이 변경되면 애니메이션 상태를 변경한다. 

 

3.2 블렌드 트리(Blend Tree)

블렌드 트리는 두 가지 이상의 애니메이션 상태를 섞는다. 성질과 타이밍이 유사한 애니메이션 모션들을 블렌딩해야 블렌드 된 모션이 자연스럽게 보인다. 제자리, 걷기, 달리기와 같은 애니메이션 상태를 표현할 때 게임 오브젝트의 속도에 따라 달라지도록 설정할 수 있다.  

 

Blend Tree

 

3.3 애니메이션 레이어

애니메이션 레이어는 다른 신체 부분에 대하여 복잡한 스테이트 머신들을 관리한다. 예를 들어, 하체 레이어에서는 걷거나 점프 애니메이션을 하고, 상체 레이어에서는 오브젝트를 던지거나 쏘는 것을 표현할 수 있다. 또는, 일반적인 걷기 상태와 부상을 당했을 때의 걷기 상태를 레이어를 이용해 표현할 수 있다. 

 

4. 애니메이터 컴포넌트(Animator Component)

게임 오브젝트에 애니메이션을 추가하는 데 사용하는 컴포넌트이다. 애니메이션 컨트롤러를 등록하여 애니메이션을 한다. 게임 오브젝트가 아바타(Avatar)에서 정의된 휴머노이드 캐릭터인 경우, 아바타를 등록해야 한다. 애니메이터 컴포넌트에 등록한 애니메이션 컨트롤러를 기반으로 게임 오브젝트를 애니메이션 한다.

A 게임 오브젝트와 B 게임 오브젝트가 동일한 애니메이션 컨트롤러를 사용하더라도, 게임 오브젝트의 애니메이션은 다르다. A와 B 게임 오브젝트에 등록된 애니메이터 컴포넌트가 다르기 때문이다. Class를 인스턴스화 한다는 개념과 비슷하다.    

 

 

5. 애니메이션 생성

Image 컴포넌트를 생성하고 회전 애니메이션을 제작한다.  

 

Animation View가 보이지 않는다면 아래의 위치에서 추가할 수 있다.

Window  Animation  Animation

 

5.1 수동 연결 

 

프로젝트 Asset 폴더에서 Animation과 Animator Controller를 생성한다. 

Create → Animation & Animator Controller 생성

 

캔버스에 Image 컴포넌트를 생성하고 Animator 컴포넌트를 추가한다.

Animator Component

 

Animator 컴포넌트에 생성한 Animator Controller를 추가한다. 

 

생성한 Animation Clip을 Scene View의 해당 게임 오브젝트에 드래그하여 추가한다. 

연결이 되었다면, 아래와 같은 상태가 된다.

 

Animation View

 

애니메이션 생성

 

  1. Animator 컴포넌트가 추가된 대상 게임 오브젝트를 선택한다.
  2. Animation View에서 빨간색 레코드 버튼을 선택한다.
  3. Rect Transform의 Rotation의 Z 값을 0으로 한다. (Z의 값을 1로 변경하고, 다시 0의 값을 입력하면 애니메이션 뷰의 오른쪽 부분에 속성 값이 추가된다. 0을 입력 시 추가되지 않은 이유는 유니티에서 변화 값을 인식하지 못하여서 발생한 것이다.)
  4. 애니메이션 뷰의 오른쪽 TimeLine에 있는 선(막대)을 24로 변경한다.
  5. 변경하고 Rect Transform의 Rotation Z 값을 360으로 설정한다. (오른쪽 시계방향으로 회전은 -360 입력 )
  6. 빨간색 레코드 버튼을 선택하여, 기록을 중지한다. 
  7. 애니메이션 뷰의 플레이 버튼 을 누르거나, 프로젝트를 실행해보면 이미지가 회전하는 것을 확인할 수 있다.

플레이버튼 ▶

 

Time Line

 

5.2 자동 연결

애니메이션 생성은 애니메이션 뷰에서 Create를 선택하면 가능하다. 

Create를 클릭하면 해당 게임 오브젝트에 Animator를 추가하고, Animation Clip 생성을 위한 선택 화면이 나온다.

 

5.1의 과정을 거치지 않아도 유니티에서 자동으로 연결한다.

 

Animation View

 

애니메이션 생성은 5.1과 동일하게 진행하면 된다.

728x90