📖 학습 목표
- 유니티에서 애니메이터 컨트롤러(AnimatorController)에 대해 이해합니다.
- Transition에서 Has Exit Time에 대해 알고 이를 이용해봅니다.
- 파라미터와 파라미터를 제어하는 방법을 알아봅니다.
📒 과정
0. Scene 열기
- 프로젝트 폴더 내 Scenes폴더 안에 있는 "8. Animation"을 엽니다.
1. AnimatorController
Unity의 애니메이터 컨트롤러는 게임 오브젝트의 애니메이션 동작을 제어하는 컴포넌트로, 애니메이션 상태와 전환을 관리합니다. 이 컨트롤러는 애니메이션 클립과 트랜지션을 조합하여 다양한 동작을 만들 수 있으며, 애니메이션 이벤트와 파라미터를 사용하여 상호작용과 상태 전환을 제어할 수 있습니다. 애니메이션 컨트롤러는 Unity의 Mecanim 시스템과 함께 사용되어 복잡한 애니메이션 시스템을 만들고 조작할 수 있습니다.
- 프로젝트 폴더 내 /Assets/Characters에 미리 만들어 둔 애니메이터 컨트롤러가 있습니다.
- Ai Movement 파일을 예시로 설명하도록 하겠습니다.
2. Parameters
- 유니티 애니메이터 컨트롤러 좌측 상단의 Parameter(파라미터)는 애니메이터 컨트롤러에서 여러 애니메이션을 특정 값에 따라 제어할 수 있도록 합니다.
- 파라미터를 이용하여 애니메이션을 제어하는 방식은 대부분 스크립트와 함께 사용됩니다.
유니티의 애니메이터 컨트롤러에는 다양한 종류의 파라미터가 있습니다.
Float Parameter (실수 파라미터):
범위 내의 실수 값을 가질 수 있는 파라미터입니다.
예를 들어, "Speed"라는 파라미터를 사용하여 캐릭터의 이동 속도를 조절할 수 있습니다.
Int Parameter (정수 파라미터)
정수 값을 가질 수 있는 파라미터입니다.
예를 들어, "Health"라는 파라미터를 사용하여 캐릭터의 체력을 나타낼 수 있습니다.
Bool Parameter (불리언 파라미터)
참(True) 또는 거짓(False) 값을 가질 수 있는 파라미터입니다.
예를 들어, "IsJumping"이라는 파라미터를 사용하여 캐릭터가 점프 중인지 여부를 제어할 수 있습니다.
한 번 설정되면 다시 초기화되지 않습니다. (마치 스위치처럼 켜고 끄는 상태로 유지)
Trigger Parameter (트리거 파라미터)
이벤트 기반으로 사용되는 파라미터입니다.
한 번 설정되면 자동으로 다시 초기화됩니다. (마치 버튼처럼 한번 누르면 초기화됨)
예를 들어, "Attack"이라는 파라미터를 사용하여 캐릭터가 공격을 시작하는 이벤트를 트리거할 수 있습니다.
이러한 파라미터들은 애니메이터 컨트롤러 내부에서 사용되어 애니메이션 상태 전환, 파라미터 값에 따른 애니메이션 재생 제어, 상호작용 등을 가능하게 합니다. 파라미터들은 스크립트나 외부 입력과 연동하여 동적인 애니메이션 제어를 구현하는 데 유용합니다.
3. Transition
- 트랜지션(Transition)은 Unity의 Animator Controller에서 애니메이션 상태 사이의 전환을 정의하는 요소입니다. 트랜지션은 현재 재생 중인 애니메이션 상태에서 다른 애니메이션 상태로 전환할 때 사용됩니다.
- 트랜지션에는 방향이 있으며, 해당 방향으로만 전환이 가능합니다.
- 트랜지션은 전환 조건(Conditions) 또는 Has Exit Time에 의해 트리거됩니다.
⭐ 전환 조건(Conditions)
- 전환 조건을 사용한 제어는 특정 파라미터 값을 기반으로 설정할 수 있습니다.
- 예를 들어, trigger 파라미터 "StartGreeting"이 true일 때만 전환하도록 설정할 수 있습니다.
- 또는 여러 파라미터 타입에 맞게 설정할 수 있습니다.
⭐ Has Exit Time
- Has Exit Time이 켜져있는 상태에서 특정한 조건 없는경우 해당 다음 트랜지션으로 자동으로 넘어갑니다.
- 전환 조건(Conditions)과 Has Exit Time이 둘 다 있는경우 전환조건이 참인경우에도 바로 넘어가지않고 현재 재생중인 애니메이션이 모두 재생될때까지 기다렸다가 다음 애니메이션으로 넘어갑니다.
4. 일반 Node
- 애니메이션을 클립을 소유하여 트랜지션을 통해 자신에게 도달하면, 가지고 있는 애니메이션을 재생하는 기능을 가집니다.
- 일반 Node는 단일한 애니메이션 클립 또는 파라미터화된 애니메이션 상태를 나타내는 가장 기본적인 애니메이션 노드입니다.
- 애니메이터 컨트롤러에 사용되는 일반 Node는 단일한 애니메이션 클립을 나타내며, 해당 클립의 재생 및 제어에 사용됩니다.
- 이러한 Node를 사용하여 특정 애니메이션을 재생하거나 조건에 따라 다른 애니메이션으로 전환하는 등의 단순한 애니메이션 동작을 구성할 수 있습니다.
5. BlendTree Node
- 유니티의 애니메이션 BlendTree는 여러 개의 애니메이션 클립을 1차원 실수 값에 따라 혼합하여 부드러운 애니메이션 전환을 만들어내는 기능입니다.
- BlendTree는 둘 이상의 애니메이션 클립을 혼합하고 조합하여 다양한 상황에 대응하는 데 사용되는 애니메이션 노드입니다.
- 예를 들어, 캐릭터의 이동 속도 및 회전 각도에 따라 걷기 애니메이션, 달리기 애니메이션 등을 조합하여 자연스러운 전환을 만들 수 있습니다.
- BlendTree는 가중치 또는 규칙 기반으로 혼합되는 애니메이션을 제어하는 데 유용합니다. 예를 들어, 특정 파라미터 범위 내에서 특정 애니메이션 클립이 활성화되도록 설정할 수 있습니다.
- BlendTree Node를 사용하기위해서는 파라미터 값이 필요합니다. 이 값은 대부분 스크립트를 이용하여 제어합니다.
- 위와같이 BlendTree Node에 들어오면 하나의 노드에 여러개의 애니메이션 클립을 사용할 수 있습니다.
- 그 애니메이션들은 요구 파라미터 값에 맞게 재생됩니다.
- 블렌드를 위한 요구 파라미터값은 위 이미지처럼 "MovementSpeed"라는 변수 이름으로 설정하였습니다.
- MovementSpeed 파라미터값에따라 애니메이션 클립이 다르게 재생되어 파라미터 값으로 서있기 - 걷기 - 뛰기 애니메이션 전환 구현이 가능합니다.
6. Parameter 제어
- 해당 강의에서는 스크립트를 설명하지는 않지만, 이런 형태로 애니메이션 내 파라미터가 제어된다는 점을 알려드립니다.
- 스크립트를 이용하여 매개변수를 변경할 수 있습니다.
- mAnimator(애니메이션 애니메이터)에 접근하여 함수를 이용하여 값을 변경합니다.
📋 학습 완료
- 유니티의 애니메이터 컨트롤러의 역할 및 기능에 대해 간단하게 배웠습니다.
- 애니메이터 컨트롤러의 파라미터를 변경하는 방법을 다뤘습니다.
'unity etc. > lecture' 카테고리의 다른 글
[유니티] 골프 게임 제작 실습 (0) | 2023.06.19 |
---|---|
[유니티] 캐릭터 애니메이션 - Mixamo 캐릭터 (0) | 2023.06.19 |
[유니티] 캐릭터 애니메이션 - Mixamo 애니메이션 (0) | 2023.06.19 |
[유니티] 캐릭터 애니메이션 - 애니메이터 컨트롤러 실습 (0) | 2023.06.19 |
[유니티] 인터렉티브 콘텐츠 제작 실습 (0) | 2023.06.19 |