1. Animator
애니메이션을 제어하는 컴포넌트 중 하나이다. 게임 오브젝트에 추가하여 애니메이션의 상태와 전환을 관리한다.
01 Animator Controller
애니메이션 상태와 전환을 조직화하고 관리하는데 사용되는 객체이다.
02 Avator
3D모델의 뼈대 및 관련 스킨 Mesh정보를 저장하는데 사용된다.
2. Humanoid Avator
신체 부위별로 뼈대와 관절을 정의하며 정말 Human과 유사한 신체 구조를 가지고 있다. 이를 사용하게 되면 신체 부위별 관절 단위로 움직이게 할 수 있다.
01 코드상에서 애니메이션 사용해보기
PlayerController.cs
void Update()
{
if (_moveToDest)
{
Animator anim = GetComponent<Animator>();
anim.Play("RUN");
}
else
{
Animator anim = GetComponent<Animator>();
anim.Play("WAIT");
}
}
Alt + 화면을 누르면 화면이 움직인다.
Aniamtion Blending
3. 블랜딩 트리 만들기
추가 된 것을 확인 한 후 더블 클릭하면 밑에 그림 처럼 Blend Tree안으로 들어갈 수 있다.
BlenTree에서 마우스 우측을 클릭하면 Add Motion을 통해서 blend할 애니메이션 파일을 추가할 수 있다.
Parameter을 wait_run_ratio의 비율에 따라 두 애니메이션을 섞을 수 있다.
Parameter부분을 클릭하면 Threshold부분 혹은 왼쪽 창에서도 수정할 수 있다.
0에서 가까울 수록 wait_00 애니메이션 비중이 높아지고 1에서 가까울 수록 Run_F 애니메이션 비중이 높아진다.
그러므로 자연스럽게 멈추기 위해서는 1에서 0으로 사용하면 된다.
PlayerController.cs
float wait_run_ratio = 0;
void Update()
{
if(_moveToDest)
{
wait_run_ratio = Mathf.Lerp(wait_run_ratio, 1, 10.0f * Time.deltaTime);
anim.SetFloat("wait_run_ratio", 1);
anim.Play("WAIT_RUN");
}
else
{
wait_run_ratio = Mathf.Lerp(wait_run_ratio, 0, 10.0f * Time.deltaTime);
anim.SetFloat("wait_run_ratio", 0);
anim.Play("WAIT_RUN");
}
01 _moveToDest가 True인 경우(이동중일때)
wait_run_ratio값을 부드럽게 1으로 수렴 시킨다. 이는 0에서 1로 점차 변화하면서 중간 값들을 가진다. 이를 반복하게 되면 해당 중간값들에 해당하는 BlendTree 애니메이션이 재생된다.
02 _moveToDest가 False인 경우(이동중이 아닐때)
wait_run_ratio값을 부드럽게 0으로 수렴 시킨다. 이는 0에서 1로 점차 변화하면서 중간 값들을 가진다. 이를 반복하게 되면 해당 중간값들에 해당하는 BlendTree 애니메이션이 재생된다.
참고 : 본 내용은 MMORPG PART3 강의를 수강하여 작성하였습니다.
https://www.inflearn.com/course/mmorpg-%EC%9C%A0%EB%8B%88%ED%8B%B0/dashboard
'유니티 공부 > Unity' 카테고리의 다른 글
Unity - Raycast, 좌표계, LayerMask, Tag (0) | 2023.02.19 |
---|---|
Unity - UI 기초, UI Rect Transform, Anchor Presets 설명 (0) | 2023.02.15 |
Unity - KeyFrame Animation(Key, Dope Sheet, Curves),Animation Event (0) | 2023.02.15 |
Unity - Animation State 패턴, State Machine (0) | 2023.02.14 |
Unity - Collider,Collision,Trigger 정리 (0) | 2023.02.12 |
댓글