개발일지
article thumbnail

#블렌드 트리

 

게임 애니메이션에서는 두 가지 이상의 모션을 실행하는 작업을 자주 합니다. 예로 들면 캐릭터의 속도에 따른 걷기와 달리기 애니메이션 블렌딩을 들 수 있습니다. 또 다른 예로는 캐릭터가 달리다가 꺾을 때 좌우로 몸을 기울이는 것과 같은 경우가 있습니다.

 


#특징

트랜지션는 일정 시간 안에 어떤 애니메이션 스테이트에서 다른 애니메이션 스테이트로 매끄럽게 전환하고 애니메이션의 구조를 깔끔하게 만들어준다.

 

블랜드 트리 적용 전

 

블랜드 트리 적용 후


#사용법

예시로 위, 아래, 왼쪽, 오른쪽으로 움직이는 간단한 2D 탑다운 애니메이션을 만들어 보자

먼저 애니메이터에서 오른쪽마우스 클릭 > Create State > From New Blend Tree

를 하여 블렌드 트리를 생성한다.

파라미터에서 x, y좌표값을 입력받을 변수를 만들자

애니메이터 창에서 블렌드 트리를 더블클릭 한 후

인스펙터 창에서 블렌드 타입을 2D Simple Directional로 변경해 준다.

인스펙터창에 있는 파라미터를 아까 만든 변수들로 교체 후

+버튼을 누르고 모션필드를 추가한다.

모션필드에 x값과 y값을 설정해 주고 그 값에 맞는 애니메이션을 추가해 준다.

그리고 난 뒤 애니메이션이 잘 작동할 수 있게 스크립트를 짜주자

using UnityEngine;

public class PlayerController : MonoBehaviour
{
    [SerializeField] private float _maxspeed = 5;//속도
    private Rigidbody2D _rigidbody;//캐릭터를 움직일 Rigdbody
    private Animator _animator;//블렌드 트리를 제어할 애니메이터

    private void Awake()
    {
        _rigidbody = GetComponent<Rigidbody2D>();
        _animator = GetComponent<Animator>();
    }

    private void FixedUpdate()
    {
        Vector2 dir = new Vector2(Input.GetAxisRaw("Horizontal"), Input.GetAxisRaw("Vertical")); //X,Y값 입력
        _rigidbody.velocity = dir.normalized * _maxspeed;//움직임 제어
        AnimatorSet(dir);//애니메이션
    }

    private void AnimatorSet(Vector2 dir)
    {
        _animator.SetFloat("InputX", dir.x); //입력받은 X값을 파라미터의 변수 InputX에 할당해준다.
        _animator.SetFloat("InputY", dir.y); //입력받은 Y값을 파라미터의 변수 InputY에 할당해준다.
    }
}

플레이어에 애니메이션 컨트룰러와 스크립트를 적용하면

이렇게 입력값에 따라 애니메이션이 자연스럽게 전환된다.

'프로그래밍 > UNITY' 카테고리의 다른 글

[Unity] UI Toolkit 커스텀 토글  (0) 2023.10.24
[Unity] Timeline  (0) 2023.08.05
[Unity] Vector에 대하여  (0) 2023.04.28
[Unity] State Machine을 이용한 FSM  (4) 2023.04.18
[Unity] Mathf 클래스  (0) 2023.03.28
profile

개발일지

@damin06

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!