유니티는 강력한 게임 개발 엔진으로, 2D 게임 개발에 매우 적합합니다. 본 강좌에서는 유니티의 애니메이터(Animator) 시스템을 통해 캐릭터 애니메이션을 제어하는 다양한 기법에 대해 알아보겠습니다. 특히, 애니메이션 상태 전이와 조건 설정을 통해 캐릭터의 애니메이션을 어떻게 유동적으로 제어할 수 있는지에 대해 중점적으로 설명하겠습니다.
1. 애니메이터(Animator)란?
애니메이터는 게임 오브젝트에서 애니메이션을 관리하고 실행하는 컴포넌트입니다. 애니메이터는 다양한 애니메이션 클립을 상태로 저장하고, 상태 전이를 통해 애니메이션 간의 전환을 제어할 수 있게 합니다. 유니티의 Animator는 상태 머신을 활용하여 복잡한 애니메이션 구조를 쉽게 설정할 수 있도록 돕습니다.
2. 프로젝트 설정
아래는 유니티 2D 프로젝트를 시작하는 방법입니다. 먼저 파라미터가 설정된 기본적인 2D 프로젝트를 만듭니다.
- 유니티를 실행하고, 새로운 2D 프로젝트를 생성합니다.
- 프로젝트 이름을 “My2DGame”으로 설정합니다.
- 프로젝트가 생성된 후, 필요한 스프라이트와 애니메이션 클립을 임포트합니다.
3. 애니메이션 클립 생성
우선 캐릭터에 대한 애니메이션 클립을 만들어야 합니다. 애니메이션 클립은 프레임 간의 변화를 정의하여 객체의 움직임을 만들어냅니다.
3.1 스프라이트 애니메이션 만들기
아래의 단계로 간단한 스프라이트 애니메이션을 생성할 수 있습니다.
- 프로젝트의 “Assets” 폴더에서 새로운 폴더를 생성하고, “Animations”라고 이름 붙입니다.
- 스프라이트를 선택하고, 키보드에서 마우스 오른쪽 버튼을 클릭한 후 “Create > Animation”을 선택하여 애니메이션 클립을 생성합니다.
- 이후 “Animation” 윈도우가 열리면, 프레임에 원하는 스프라이트를 드래그 앤 드롭하여 애니메이션을 설정할 수 있습니다.
4. 애니메이터 컨트롤러 만들기
애니메이터 컨트롤러는 애니메이션 상태와 상태 전이를 정의하는 용도로 사용됩니다. 다음과 같이 생성할 수 있습니다.
- Assets 폴더에서 마우스 오른쪽 버튼을 클릭하고 “Create > Animator Controller”를 선택합니다.
- 새로 생성된 애니메이터 컨트롤러의 이름을 “PlayerAnimator”으로 설정합니다.
- 애니메이터 컨트롤러를 더블 클릭하여 Animator 창이 열리면, 필요한 애니메이션 클립들을 드래그하여 상태로 추가합니다.
5. 애니메이션 상태 추가 및 전이 설정하기
애니메이터에서는 상태 머신을 활용해 다양한 애니메이션 간의 전이를 설정할 수 있습니다. 상태 전이는 특정 조건을 충족할 때 발생하도록 설정할 수 있습니다. 아래는 전이 설정 방법입니다.
5.1 상태 추가하기
애니메이션 클립을 애니메이터에 추가한 후, 각 애니메이션 상태를 설정합니다. 예를 들어, “Idle”, “Run”, “Jump” 애니메이션이 있을 수 있습니다.
5.2 전이 설정하기
상태 전이를 추가하기 위해서는 다음의 단계를 수행합니다.
- 상태 하나에서 다른 상태로 마우스를 드래그하여 전이를 만듭니다.
- 전이를 선택한 후, “Inspector” 패널에서 전이에 대한 설정을 조정합니다.
5.3 조건 추가하기
상태 전이에 조건을 추가하여 애니메이션을 자동으로 전환할 수 있습니다. 이를 위해, 아래와 같이 설정합니다.
- 전이를 선택하고, “Conditions” 섹션에서 “+” 버튼을 클릭하여 새로운 조건을 추가합니다.
- 조건은 애니메이터의 파라미터에 기반해야 하며, 이를 통해 캐릭터의 상태에 따라 애니메이션을 전환할 수 있습니다.
6. 애니메이터 파라미터 설정
상태 전이를 제어하기 위해서는 애니메이터 파라미터를 설정해야 합니다. 여기에 따라 애니메이션이 어떻게 전환되는지를 정의할 수 있습니다.
6.1 파라미터 추가하기
이 단계에서는 논리적 상태를 나타내도록 애니메이터에 파라미터를 추가합니다.
- 애니메이터 창의 “Parameter” 탭에서 “+” 버튼을 통해 새로운 파라미터를 추가합니다.
- 예: “isRunning”, “isJumping”과 같은 Boolean 타입의 파라미터를 추가합니다.
6.2 스크립트에서 파라미터 조작하기
이제 필요한 조건이 만족될 때마다 스크립트에서 파라미터 값을 조작하여 애니메이션 전이를 제어합니다. 예제 코드는 다음과 같습니다.
using UnityEngine;
public class PlayerController : MonoBehaviour
{
private Animator animator;
private float moveInput;
void Start()
{
animator = GetComponent();
}
void Update()
{
moveInput = Input.GetAxis("Horizontal");
animator.SetFloat("Speed", Mathf.Abs(moveInput));
// 캐릭터 점프 코드
if (Input.GetButtonDown("Jump"))
{
animator.SetTrigger("Jump");
}
}
}
7. 통합 및 테스트
위의 모든 단계를 통합하여، 플레이어 캐릭터가 입력에 따라 적절한 애니메이션을 수행하도록 합니다.
7.1 게임 오브젝트에 스크립트 할당하기
위에서 작성한 PlayerController 스크립트를 캐릭터 게임 오브젝트에 추가합니다.
7.2 테스트 실행
게임을 플레이 모드로 실행하여 키보드 입력에 따라 캐릭터의 애니메이션이 정상적으로 전환되는지 확인합니다.
8. 추가 팁
상태 전이와 조건을 설정할 때 유용한 몇 가지 추가 사항입니다.
- 부드러운 전이: 전이 조건의 “Transition Duration” 값을 조정하여 애니메이션이 부드럽게 연결되도록 설정할 수 있습니다.
- 디버깅: 애니메이터의 “Animator” 창에서 파라미터를 실시간으로 확인하여 문제가 발생하는지 점검할 수 있습니다.
- 성능 최적화: 사용하지 않는 애니메이션은 비활성화하여 성능을 개선할 수 있습니다.
결론
유니티의 애니메이터는 2D 게임에서 캐릭터의 애니메이션을 손쉽게 제어할 수 있게 도와줍니다. 이 강좌를 통해 애니메이션 상태와 전이를 설정하여 캐릭터의 다양한 동작을 구현하는 방법을 배웠습니다. 더 복잡한 애니메이션 또한 같은 원리를 토대로 설정할 수 있으며, 자신의 게임에 맞춘 애니메이션 시스템을 만들어 보시기 바랍니다.
부록: 참고자료
더 많은 정보를 원하신다면, 아래의 자료를 참고하시기 바랍니다.