[ Unity Component ] Animator

Animator Component : 게임 오브젝트에 애니메이션을 지정하는 데 사용합니다.


Properties
Controller : Animator Controller 를 할당하는데



Animator Controller는 위와 같은 애니메이션 상태 머신을 사용하여 해당 오브젝트의 애니메이션을 쉽게 배치하고, 컨트롤 할 수 있습니다. 각 애니메이션으로 진행되는 분기를 위한 Parameters 를 생성하고, Script 에서 이를 적절히 컨트롤하여 사용합니다.

Avatar : 모델 파일을 임포트 한 후 Rig 설정을 끝마치면 Avatar에 할당 할 수 있습니다.

Apply Root Motion : 캐릭터의 position 과 rotation 을 스크립트에서 제어 하지 않고 애니메이션 자체에서 제어합니다.

Update Mode : 애니메이터의 업데이트 시점을 선택합니다.
 - Normal : Update() 호출과 싱크됩니다. 애니메이터의 속도는 현재 타임스케일과 일치합  니다. 따라서 타임스케일이 느려지면 애니메이션도 따라서 느려집니다.

 - Animate Physics : FixedUpdate() 호출에 싱크됩니다. 물리 상호작용을 하는 Object인 경 우 모션을 애니메이션 화 하기 위해서는 이 모드를 사용합니다.

 - Unscaled Time : Update() 호출과 싱크되지만, 애니메이터의 속도는 현재의 Time Scale을 무시하며, 항상 100%의 속도로 애니메이션 화 합니다. 수정된 Time Scale을 사용하면서 GUI 시스템을 노멀 속도로 애니메이션화 하는 경우 유용합니다.

 *Time Scale : Time.timeScale property 로 기본값은 1.0이다. 1.0 인 경우 게임 내의 시간은 현실시간과 똑같이 흐르며 0.5일 경우 절반으로 흐르고 0일경우 멈춘다.  다만 이것은 시간이 실제로 느려지는 것이 아니라 Time.deltaTime 및 time.fixedDeltaTime 을 통해 Update 및 FixedUpdate 함수에 전해지는 타임 스탭만 변경한다는 점에 유의하자.

Culling Mode : 애니메이션 컬링 모드. (애니메이션이 사용자에게 보이지 않는다고 판단하면 표시하지 않음)
 - Always Animate : 항상 애니메이션, off Screen 일 경우에도 컬링 하지 않음
 - Cull Update Transforms : 렌더러가 보이지 않으면 리타겟,IK,트랜스폼 쓰기를 비활성화
 - Cull Completely : 렌더러가 보이지 않으면 완전 비활성화
  *리타게팅 : Rig을 공유하는 모델들은 모두 같은 애니메이션을 공유 할 수 있는데 이때, 모델의 세부적인 부분 ( 키, 덩치 ) 등이 다를경우 보기 흉하게 애니메이션이 출력될 수 있다. 이를 방지하는 것이 리타겟이다.







O게임의 모델와 리타게팅 사이의 오류로 추청되는 짤

Animation Curve 정보 : 마지막 텍스트 부분 Curve란 애니메이션으로 발생하는 값의 변화
 - Clip Count : 할당된 애니메이터 컨트롤러가 사용하는 클립의 총 수
 - Curves : 오브젝트의 position rotation scale 을 에니메이션화 하는데 사용하는 Curve의 수. 휴머노이드 아바타의 경우 머리카락 등 비근육 애니메이션 커브의 갯수를 표시한다.
 - Muscles : 아바타의 근육 애니메이션 커브의 갯수를 표사
 - Generic : 머티리얼 컬러와 같은 위 두가지 경우를 제외한 나머지 Curve 의 수
 - PPtr : 2D의 경우 스프라이트 애니메이션 커브
 - Constant : 상수값으로 최적화된 애니메이션 커브의 갯수. Unity에서 자동으로 선택
 - Stream : 커브에 필요한 데이터 (탄젠트 데이터나 시간 값)가 Stream Method 를 사용하는 애니메이션 커브의 개수.
 - Dense : 커브에 필요한 데이터 들이 Dense Method 에 의해 최적화된 애니메이션 커브의 개수. Stream method 에 비해 메모리 사용이 훨씬 적다.