유니티 2D 애니메이션 블렌드 트리 사용해보기

2020. 7. 28. 21:55유니티실습

반응형

안녕하세요 유니티 비기너입니다.

이번 시간에는 애니메이션의 블렌드 트리에 대해 알아보겠습니다.

 

블렌드 트리란

간단하게 설명하자면 하나의 트리에 여러 모션을 블렌드 하고 조건에 해당하면 모션이 실행되는 구조를 말합니다.

가장 간단한 예로는 캐릭터의 상하좌우 이동이나 걷기/달리기 애니메이션에 대한 사례가 있습니다.

 

테스트 화면

Animator와 작성한 스크립트를 포함하는 Player오브젝트에 Input GetAxis를 활용하여

키보드 입력을(WASD) 받을 때마다 블렌드 트리에 블렌딩 되어있는 애니메이션으로 전환하는 모습입니다.

 

 

블렌드 트리 생성

블렌드 트리를 만들고자 하는 state를 선택하고 우클릭 Create new BlendTree in State를 선택한다.

 

인스펙터의 모션에 Blend Tree를 확인하고 더블클릭한다.

 

탑뷰에서의 상하좌우를 표현하기 위해 블렌드 타입을 2D로 변경하고

파라미터를 설정하고 미리 만들어놓은 애니메이션 모션을 할당합니다.

 

Parameter값이 변경될 때마다 애니메이션 모션이 전환됩니다.

positionX가 0, positionY가 -1인 경우 downIdle

positionX가 -1, positionY가 0인경우 leftIdle

positionX가 1, positionY가 0인경우 RightIdle

positionX가 0, positionY가 1인경우 UpIdle

 

파라미터는 Animator창에서 편집합니다.

 

 

스크립트

public class AnimationBlendTree : MonoBehaviour
{
    Vector2 movement;
    private Animator anim;

    private void Awake() {
        anim = GetComponent<Animator>();
    }

    void Update() {
        movement.x = Input.GetAxis("Horizontal");
        movement.y = Input.GetAxis("Vertical");

        anim.SetFloat("positionX", movement.x);
        anim.SetFloat("positionY", movement.y);
    }
}

Input.GetAxis를 이용하여 키보드 입력값에 대해 -1 ~ 1까지의 값을 가져오며 

애니메이션 Float형 파라미터값에 적용시켜 블렌드 되어있는 모션으로 전환합니다.

 

트랜지션과 블렌드 트리는 비슷하지만 각자의 상황에 맞게 이용됩니다.

 

블렌드 트리는 여러 개의 애니메이션의 모션이 자연스럽게 보이려면

성질과 타이밍이 유사한 모션들끼리 블렌드 되어야 하고

 

트랜지션은 어떤 모션에서 전혀 다른 모션으로 전환되어도 매끄럽게 표현이 가능하기 때문에

성질과 타이밍이 반드시 같아야 할 필요는 없습니다.

 

※ 각자의 프로젝트의 성질에 맞게 적용시켜 표현하는 것이 중요합니다.

 

반응형