[Unity Course 2] 06. 적 캐릭터 제작 1
위키북스 출판사 이재현 저자님의 '절대강좌! 유니티' 책을 참고하여 필기한 내용입니다.
유한 상태머신의 정의 (FSM; Finite State Machine)
: 적 캐릭터가 스스로 알아서 주변 환경에 적응하거나 들어오는 반응에 적절하게 반작용하도록 구현한 것

유한 상태 머신 개념도
FSM의 단점은 상태가 많아질수록 상태와 상태 간의 연결이 복잡해지고 코드의 확장과 유지 보수가 어려워짐
이런점을 개선하기 위한 방식은 계층적 유한 상태 머신 (HFSM; Hierachical Finite State Machine), 행동 트리 (BT; Behaviour Tree)
메카님
리타게팅 기능을 제공하여 인체형 모델의 필수 본 구조와 일치하면 다른 모델의 애니메이션이나 모션 캡처 애니메이션을 바로 적용 가능
- 노드 기반의 Visual Editor
- 세밀한 애니메이션 처리
- 리타게팅을 통한 애니메이션 적용
메카님은 시각적인 설계 방식(WYSIWYG) 의 에디터 제공
적 캐릭터 3D 모델 임포트


| 애니메이션 타입 | 특성 |
| 레거시 | 유니티 4.0 이전에서 사용하던 애니메이션 시스템 |
| 제너릭 | 메카님 애니메이션(비인간형 모델), 리타게킹 불가 |
| 휴머노이드 | 메카님 애니메이션(인간형 모델, 2족 보행 모델), 리타게팅 가능 |
휴머노이드로 변경하고 Apply

Configure 앞에 체크 표시가 되어 있어야 한다.
실선으로 돼 있는 원은 필수로 연결해야 하는 본으로 총 15개가 있음
점선으로 된 원은 추가적인 본으로 연결하지 않아도 무방

Muscles & Settings에서 각 관절의 정상적인 동작 여부를 슬라이더로 조절하며 시각적으로 확인할 수 있음

Per-Muscle Settings에서는 각 관절이 회전할 수 있는 최소 각도와 최대 각도의 범위를 설정
애니메이션 클립 속성

Loop Time : 애니메이션 클립을 무한반복하는 옵션
Loop Pose : 애니메이션을 반복할 때 끊김 없이 부드럽게 해주는 옵션
idle, walk, attack 애니메이션은 Loop Time 을 체크하고 나머지는 체크하지 않음
애니메이션 리타게팅
다른 애니멩션 동작을 가져와 재사용하는 기능
Mixamo
www.mixamo.com
이 사이트에서 gangnam을 검색해서


몬스터의 fbx 파일을 넣어 적용해보면 미리보기로 확인할 수 있다.

미리 받아져 있는 gangnam을 이용해 만들어 보자

Loop Time 체크하기

드래그하면 프리뷰로 볼 수 있음
Animator 컴포넌트

플레이어와는 다르게 몬스터는 Animator 컴포넌트가 자동으로 추가 되어있는 모습을 확인할 수 있는데 메카님이기 때문이다. 구분할 줄 알아야됨
| 컴포넌트 | 애니메이션 타입 | 세부 옵션 |
| Animator | 메카님 애니메이션 | 제너릭 휴머노이드 |
| Animation | 레거시 애니메이션 |
Animator 속성
| 속성 | 설명 |
| Controller | 애니메이션 클립 간의 연결 정보를 저장한 Animator Controller를 연결 |
| Avator | 해당 모델의 본 매핑 정보를 저장한 Avator 에셋을 연결 |
| Apply Root Motion | 애니메이션 클립에 저장된 위치와 회전값에 대한 적용 여부 |
| Update Mode | 애니메이션의 갱신과 Time Scale의 적용 여부에 대한 설정 - Normal : Update 주기와 동기됨, 애니메이션 속도는 Time Scale 의 영향 미침 - Animate Physics : FixedUpdate 주기와 동기됨 Rigidbody와 상호작용할 때 사용 - Unscaled Time : Update 주기와 동기됨 애니메이션 속도는 Time Scale의 영향미침 |
| Culling Mode | 애니메이션 클립의 동작 정지에 대한 설정 - Always Animation : 항상 애니메이션을 실행하는 옵션으로 렌더링 하지 않아도 동작함 - Cull Update Transforms : 렌더링 하지 않을 때 Transform, IK, Retarget 기능을 정지 - Cull Completely : 렌더링 하지 않으면 애니메이션의 모든 기능 정지 |