Chapter 6-2. 애니메이션 : 블렌딩

Date:     Updated:

카테고리:

태그:

인프런에 있는 Rookiss님의 [C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진 강의를 듣고 정리한 필기입니다. 😀
🌜 강의 들으러 가기 Click

Chapter 6. 애니메이터

🚖 애니메이션 블렌딩

블렌딩 트리 만들기

블렌딩 트리 또한 하나의 애니메이션 상태이다. 여러 애니메이션을 파라미터의 값에 의하여 섞어 하나의 애니메이션 상태로 정의한다.

image

블렌딩 트리를 추가한 후

image

이름을 WAIT_RUN으로 정의하였다. 이제 이 애니메이션 상태는 WAIT_00 이름의 애니메이션 파일과 RUN_F 이름의 애니메이션 파일을 섞은 형태로 재생된다. 더 자연스럽게!


블렌딩 트리 작성

image

Add Motion 으로 섞을 애니메이션 파일들을 추가 한다.

image

애니메이션 파일들을 섞을 기준이 될 Float 타입의 파라미터 wait_run_ratio를 추가했다.

  • wait_run_ratio 값이 0 에 가까울 수록 WAIT_00 애니메이션 파일을 더 강하게 재생한다.
  • wait_run_ratio 값이 1 에 가까울 수록 RUN_F 애니메이션 파일을 더 강하게 재생한다.
  • wait_run_ratio 값이 0/5라면 두 애니메이션이 반반씩 섞인 모션으로 재생될 것이다.
  • wait_run_ratio 값의 변화는 코드에서 정의할 것.

image

  • 사용할 파라미터를 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 값이 0 에 가까워지도록 보간한다.
      • 이때의 wait_run_ratio 는 멤버 변수
    • 부드럽게 0 로 보간되어 가는, 혹은 0 로 보간 완료 된 wait_run_ratio 값을 진짜 애니메이션 파라미터 wait_run_ratio에 적용한다.
    • 그 상태에서 “WAIT_RUN” 블렌드 트리 재생

정지 혹은 달리기시 애니메이션이 팍팍 변하는게 아니라 정지 였다가 달리기 입력이 들어오면 부드럽게 달리기로 서서히 변한 후에 달리는 식으로 애니메이션이 부드럽게 재생된다!



🌜 개인 공부 기록용 블로그입니다. 오류나 틀린 부분이 있을 경우 
언제든지 댓글 혹은 메일로 지적해주시면 감사하겠습니다! 😄

맨 위로 이동하기

Unity Lesson 2 카테고리 내 다른 글 보러가기

댓글 남기기