반응형
애니메이션 블렌딩(Animation Blending)은 여러 애니메이션 클립을 조합하여 자연스러운 전환 및 중간 상태를 만들어내는 기술입니다. Unity의 Mecanim 시스템을 사용하면 애니메이션 블렌딩을 손쉽게 구현할 수 있습니다.
애니메이션 블렌딩에는 주로 두 가지 방법이 사용됩니다.
1. 레이어와 레이어 블렌딩:
- 레이어(Layer): 여러 개의 애니메이션 레이어를 사용하여 각각 독립적인 애니메이션을 재생할 수 있습니다.
- 레이어 블렌딩: 레이어 간의 블렌딩을 통해 각 레이어의 가중치를 설정하여 자연스러운 전환을 가능하게 합니다.
using UnityEngine;
public class LayerBlendingExample : MonoBehaviour
{
private Animator animator;
void Start()
{
animator = GetComponent<Animator>();
}
void Update()
{
// 예시: 이동 방향에 따라 "Run" 애니메이션과 "Rotate" 애니메이션을 블렌딩
float horizontal = Input.GetAxis("Horizontal");
float vertical = Input.GetAxis("Vertical");
// 이동 방향에 따라 가중치 설정
float moveSpeed = Mathf.Clamp01(Mathf.Abs(horizontal) + Mathf.Abs(vertical));
animator.SetFloat("Speed", moveSpeed);
// 회전 방향에 따라 "Rotate" 애니메이션 블렌딩
float rotateAngle = Mathf.Atan2(horizontal, vertical) * Mathf.Rad2Deg;
animator.SetFloat("RotateAngle", rotateAngle);
}
}
2. 블렌드 트리(Blend Tree):
- 블렌드 트리: 여러 애니메이션 클립을 트리 구조로 구성하여 자연스러운 블렌딩을 구현합니다.
- 각 노드는 입력 파라미터의 값에 따라 다른 애니메이션을 가중치를 조절하여 재생합니다.
using UnityEngine;
public class BlendTreeExample : MonoBehaviour
{
private Animator animator;
void Start()
{
animator = GetComponent<Animator>();
}
void Update()
{
// 예시: 이동 방향에 따라 "Run" 애니메이션과 "Rotate" 애니메이션 블렌딩
float horizontal = Input.GetAxis("Horizontal");
float vertical = Input.GetAxis("Vertical");
// 이동 방향에 따라 블렌드 트리의 가중치 설정
animator.SetFloat("Horizontal", horizontal);
animator.SetFloat("Vertical", vertical);
}
}
애니메이션 블렌딩을 통해 캐릭터의 이동, 회전, 상태 전환 등을 부드럽게 제어할 수 있습니다.
Unity의 Mecanim 시스템은 이러한 기능을 쉽게 사용할 수 있도록 해주며, Animator 창에서 레이어와 블렌드 트리를 시각적으로 구성할 수 있습니다.
728x90
반응형
'기초코딩강좌 > 유니티 기초 강좌' 카테고리의 다른 글
18. 마무리 - 코딩 잘하는 방법 (0) | 2024.01.07 |
---|---|
17. 상태 머신 (0) | 2024.01.06 |
15. 메카님 시스템 (1) | 2024.01.04 |
14. 애니메이션 기초 (1) | 2024.01.03 |
13. 충돌 감지와 반응 (0) | 2024.01.02 |