[Unity3D] 1D 블렌드 트리

oy Hong·2024년 5월 2일

1D 블렌드 트리


블렌드 유형이 1D라면 블렌딩이 단일 매개변수롤 제어된다는 것을 의미한다. 보통 사용의 목적은 속도를 기준으로 블렌딩할 때이다.

이동 방향과 속도를 기준으로 블렌딩하려는 경우

  • 2D Simple Directional
  • 2D Freeform Directional
  • 2D Freeform Cartesian

을 사용한다.

블렌딩

Input Magnitude 매개변수의 값에 따라 Idle, Walking, Running 애니메이션을 자연스럽게 블렌딩하도록 설정할 수 있다.

스크립트

Input Magnitude 매개변수를 조작하여 블렌딩 애니메이션을 조작해보자.
점프 구현 스크립트의 이동부분을 수정한다.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayerMovement : MonoBehaviour
{
	// 최대 속도 정의
    public float maximumSpeed = 3;

    void Update()
    {
        // ...생략

        Vector3 movementDirection = new Vector3(horizontalInput, 0, verticalInput);
        // 입력 크기와 최대 속도에 따라 캐릭터가 움직이는 속도 정의
        float inputMagnitude = Mathf.Clamp01(movementDirection.magnitude);
        float speed = inputMagnitude * maximumSpeed;

        // 키보드에서의 걷기 행동 추가
        if(Input.GetKey(KeyCode.LeftShift) || Input.GetKey(KeyCode.RightShift))
        {
            inputMagnitude *= 0.5f;
        }

        animator.SetFloat("Input Magnitude", inputMagnitude);
        
        movementDirection.Normalize();

        // ...생략
    }
}

문제 해결

걷기와 달리기 사이의 애니메이션이 스냅되는 문제를 해결해보자.

// 수정
animator.SetFloat("Input Magnitude", inputMagnitude, 0.05f, Time.deltaTime);

애니메이션이 너무 빨리 바뀌지않도록 감쇠하는 효과가 있도록 dampTime을 설정한다.

0개의 댓글