#블렌드 트리
게임 애니메이션에서는 두 가지 이상의 모션을 실행하는 작업을 자주 합니다. 예로 들면 캐릭터의 속도에 따른 걷기와 달리기 애니메이션 블렌딩을 들 수 있습니다. 또 다른 예로는 캐릭터가 달리다가 꺾을 때 좌우로 몸을 기울이는 것과 같은 경우가 있습니다.
#특징
트랜지션는 일정 시간 안에 어떤 애니메이션 스테이트에서 다른 애니메이션 스테이트로 매끄럽게 전환하고 애니메이션의 구조를 깔끔하게 만들어준다.
#사용법
예시로 위, 아래, 왼쪽, 오른쪽으로 움직이는 간단한 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 |