Chapter 6-2. 애니메이션 : 블렌딩
카테고리: Unity Lesson 2
태그: Unity Game Engine
인프런에 있는 Rookiss님의 [C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진 강의를 듣고 정리한 필기입니다. 😀
🌜 강의 들으러 가기 Click
Chapter 6. 애니메이터
🚖 애니메이션 블렌딩
블렌딩 트리 만들기
블렌딩 트리 또한 하나의 애니메이션 상태이다. 여러 애니메이션을 파라미터의 값에 의하여 섞어 하나의 애니메이션 상태로 정의한다.
블렌딩 트리를 추가한 후
이름을 WAIT_RUN
으로 정의하였다. 이제 이 애니메이션 상태는 WAIT_00
이름의 애니메이션 파일과 RUN_F
이름의 애니메이션 파일을 섞은 형태로 재생된다. 더 자연스럽게!
블렌딩 트리 작성
Add Motion 으로 섞을 애니메이션 파일들을 추가 한다.
애니메이션 파일들을 섞을 기준이 될 Float 타입의 파라미터 wait_run_ratio
를 추가했다.
wait_run_ratio
값이 0 에 가까울 수록WAIT_00
애니메이션 파일을 더 강하게 재생한다.wait_run_ratio
값이 1 에 가까울 수록RUN_F
애니메이션 파일을 더 강하게 재생한다.wait_run_ratio
값이 0/5라면 두 애니메이션이 반반씩 섞인 모션으로 재생될 것이다.wait_run_ratio
값의 변화는 코드에서 정의할 것.
- 사용할 파라미터를
wait_run_ratio
로 변경해준다.- 이 값을 기준으로 두 애니메이션을 섞을 것이니 중요
- 0 에 가까울 수록
WAIT_00
애니메이션 파일을 더 강하게 재생할 수 있도록 Threshold 값을 0 으로 설정 - 1 에 가까울 수록
RUN_F
애니메이션 파일을 더 강하게 재생할 수 있도록 Threshold 값을 1 으로 설정
📜PlayerController.cs
float wait_run_ratio = 0;
void Update()
{
if (_moveToDest)
{
// ...
}
if (_moveToDest)
{
wait_run_ratio = Mathf.Lerp(wait_run_ratio, 1, 10.0f * Time.deltaTime);
Animator anim = GetComponent<Animator>();
anim.SetFloat("wait_run_ratio", wait_run_ratio);
anim.Play("WAIT_RUN");
}
else
{
wait_run_ratio = Mathf.Lerp(wait_run_ratio, 0, 10.0f * Time.deltaTime);
Animator anim = GetComponent<Animator>();
anim.SetFloat("wait_run_ratio", wait_run_ratio);
anim.Play("WAIT_RUN");
}
}
- 이동 중 일 때
- wait_run_ratio 값이 1 에 가까워지도록 보간한다.
- 이때의 wait_run_ratio 는 멤버 변수
- 부드럽게 1 로 보간되어 가는, 혹은 1 로 보간 완료 된 wait_run_ratio 값을 진짜 애니메이션 파라미터
wait_run_ratio
에 적용한다. - 그 상태에서 “WAIT_RUN” 블렌드 트리 재생
- wait_run_ratio 값이 1 에 가까워지도록 보간한다.
- 이동이 아닐 때
- wait_run_ratio 값이 0 에 가까워지도록 보간한다.
- 이때의 wait_run_ratio 는 멤버 변수
- 부드럽게 0 로 보간되어 가는, 혹은 0 로 보간 완료 된 wait_run_ratio 값을 진짜 애니메이션 파라미터
wait_run_ratio
에 적용한다. - 그 상태에서 “WAIT_RUN” 블렌드 트리 재생
- wait_run_ratio 값이 0 에 가까워지도록 보간한다.
정지 혹은 달리기시 애니메이션이 팍팍 변하는게 아니라 정지 였다가 달리기 입력이 들어오면 부드럽게 달리기로 서서히 변한 후에 달리는 식으로 애니메이션이 부드럽게 재생된다!
🌜 개인 공부 기록용 블로그입니다. 오류나 틀린 부분이 있을 경우
언제든지 댓글 혹은 메일로 지적해주시면 감사하겠습니다! 😄
댓글 남기기