icon

안동민 개발노트

7장 : 애니메이션 블루프린트

스테이트 머신의 기본 활용


지난 절에서 애님 그래프 기본 구성 요소를 살펴보며 스테이트 머신(State Machine)이 캐릭터 애니메이션 제어의 핵심임을 확인했습니다. 이번 절에서는 스테이트 머신을 더 깊게 이해하고, 실제 캐릭터 움직임 기반으로 애니메이션 상태를 관리하는 방법을 정리합니다.


스테이트 머신이란 무엇인가?

스테이트 머신(State Machine)은 특정 조건에 따라 캐릭터의 애니메이션 상태를 전환하고 관리하는 애님 그래프의 핵심 노드입니다. 마치 신호등이 빨간 불, 노란 불, 초록 불이라는 상태를 가지며, 정해진 시간이나 규칙에 따라 이 상태들을 전환하는 것과 같습니다.

캐릭터 애니메이션에서 상태는 일반적으로 특정 행동을 나타냅니다. 예를 들어, Idle (대기), Walk (걷기), Run (달리기), Jump (점프), Attack (공격) 등이 상태가 될 수 있습니다.

스테이트 머신이 필요한 이유
  • 명확한 상태 관리: 캐릭터가 어떤 애니메이션 상태에 있는지 시각적으로 명확하게 파악하고 관리할 수 있습니다.
  • 부드러운 전환: 각 상태 간의 전환 규칙(Transition Rule)을 정의하여 애니메이션이 갑자기 끊기지 않고 자연스럽게 이어지도록 합니다.
  • 복잡한 로직 단순화: 다양한 애니메이션 조합과 전환 로직을 스테이트 머신이라는 구조 안에서 체계적으로 구성할 수 있습니다.
  • 디버깅 용이성: 특정 상태에서 애니메이션이 제대로 재생되지 않거나 전환이 이상할 때, 해당 상태와 전환 규칙만 집중적으로 살펴볼 수 있어 문제 해결이 용이합니다.

스테이트 머신의 기본 구성 요소

스테이트 머신을 더블클릭하여 진입하면 다음과 같은 요소들을 볼 수 있습니다.

상태 (State)
  • 캐릭터의 특정 행동을 나타내는 상자 모양의 노드입니다. 각 상태 안에는 해당 상태에서 재생될 애니메이션 로직(애니메이션 시퀀스, 블렌드 스페이스 등)이 들어갑니다.
  • 진입점(Entry Point): 스테이트 머신에 처음 진입할 때 시작되는 기본 상태입니다.
전환 규칙 (Transition Rule)
  • 두 상태를 연결하는 화살표 모양의 선입니다. 이 선은 한 상태에서 다른 상태로 전환될 수 있는 경로를 나타냅니다.
  • 전환 규칙을 더블클릭하면 해당 전환이 발생할 조건을 정의하는 별도의 그래프(Transition Graph)가 열립니다.

스테이트 머신 활용 예시: Idle, Walk, Run

지난 절에서 언급했던 Idle, Walk, Run 상태를 가진 스테이트 머신을 자세히 구현해봅시다. 이 예시는 대부분의 캐릭터 애니메이션 시스템의 기본이 됩니다.

필요한 에셋
  • Idle 애니메이션 시퀀스 (예: SKM_Mannequin_Idle)
  • Walk_Run_BlendSpace (2D 블렌드 스페이스, X축: Speed, Y축: Direction (선택 사항), 포함 애니메이션: Walk, Run)
애님 블루프린트 설정

애님 블루프린트 열기: 여러분의 캐릭터 스켈레톤에 연결된 애님 블루프린트 (예: ABP_Mannequin)를 엽니다.

이벤트 그래프 설정 (변수 업데이트)
  • Event Blueprint Update Animation 노드를 가져옵니다. 이 이벤트는 매 프레임마다 애니메이션을 업데이트하기 위해 호출됩니다.
  • Try Get Pawn Owner 노드를 가져와 이 애니메이션 블루프린트를 사용하는 폰(Pawn, 즉 캐릭터)의 참조를 얻습니다.
  • Try Get Pawn OwnerReturn Value에서 드래그하여 IsValid 노드를 연결하여 폰이 유효한지 확인합니다.
  • IsValidIs Valid 핀 뒤에 폰을 Cast To Character (또는 Cast To BP_PlayerCharacter)로 캐스팅합니다.
  • 캐스팅 성공 핀(As Character)에서 Get Velocity 노드를 호출하여 현재 이동 속도를 얻습니다.
  • Get VelocityReturn Value에서 Vector Length 노드를 호출하여 속도 벡터의 크기(절대 속도)를 계산합니다.
  • 이 속도 값을 저장할 Speed라는 Float 타입 변수를 애님 블루프린트에 추가하고, Set Speed 노드를 연결하여 업데이트합니다. (Speed 변수는 나중에 스테이트 머신의 전환 규칙과 블렌드 스페이스에서 사용됩니다.)
  • 컴파일 및 저장합니다.
애님 그래프 - 스테이트 머신 설정
  • 애님 그래프 탭으로 이동합니다.
  • Default State Machine 노드를 더블클릭하여 내부로 진입합니다.
  • Entry 노드에서 Idle 상태로 연결되는 선이 없다면, Entry 노드에서 드래그하여 Add State를 선택하고 Idle이라는 상태를 만듭니다.
  • Idle 상태를 선택하고 디테일 패널에서 Animation / Asset Player 섹션에 Idle 애니메이션 시퀀스를 연결합니다. 또는 Idle 상태를 더블클릭하여 내부로 진입한 후, Animation Sequence Player 노드를 배치하고 Idle 애니메이션을 연결한 뒤 Output Pose에 연결합니다.
  • Idle 상태에서 드래그하여 Add State를 선택하고 Walk_Run이라는 상태를 만듭니다.
  • Walk_Run 상태를 더블클릭하여 내부로 진입합니다.
    • Blend Space Player 노드를 배치하고, Blend Space 핀에 Walk_Run_BlendSpace를 연결합니다.
    • Blend Space Player의 입력 핀(Speed 또는 Speed, Direction)에 애님 블루프린트의 Speed 변수(Get 노드)를 연결합니다.
    • Output Pose 노드에 연결합니다.
  • 전환 규칙 설정
    • Idle에서 Walk_Run으로 가는 전환 규칙 선을 더블클릭합니다.
    • Can Enter Transition 출력 핀에 연결될 로직을 만듭니다. Speed 변수(Get 노드)를 가져와 > (보다 큼) 노드를 연결하고, 0.1과 비교합니다. (미세한 움직임에도 전환되지 않도록 작은 값을 사용)
    • Walk_Run에서 Idle로 가는 전환 규칙 선을 더블클릭합니다.
    • Can Enter Transition 출력 핀에 연결될 로직을 만듭니다. Speed 변수(Get 노드)를 가져와 < (보다 작음) 노드를 연결하고, 0.1과 비교합니다.
  • 컴파일 및 저장합니다.

스테이트 머신 활용 시 고려사항

  • 상태 전환 블렌딩: 스테이트 머신은 기본적으로 상태 전환 시 두 애니메이션을 부드럽게 블렌딩합니다. 전환 규칙 선을 선택하고 디테일 패널에서 Transition Duration (전환 시간), Blend Mode, Blend Curve 등을 조절하여 블렌딩 방식을 세밀하게 제어할 수 있습니다.
  • 전환 우선순위: 여러 전환 규칙이 동시에 충족될 수 있는 경우, 언리얼 엔진은 기본적으로 가장 오래된 (먼저 생성된) 전환 규칙에 우선순위를 둡니다. 복잡한 상황에서는 Transition Priority를 조절하거나, Conduit 노드를 사용하여 전환 로직을 단순화할 수 있습니다.
  • 콘딧 (Conduit): 여러 상태가 공통된 전환 규칙을 가질 때, 이 규칙을 한곳에 모아 관리할 수 있는 노드입니다. 스테이트 머신 그래프를 깔끔하게 유지하는 데 도움을 줍니다.
  • 캐시 포즈 (Cached Pose): 동일한 애니메이션 포즈를 여러 상태나 블렌딩 로직에서 재사용해야 할 때, 해당 포즈를 캐시 포즈로 저장해두고 여러 곳에서 불러와 사용하면 성능 최적화와 가독성 향상에 도움이 됩니다.
  • 애님 노티파이 (Anim Notify): 애니메이션 재생 중 특정 프레임에서 이벤트를 발생시키는 기능입니다. (예: 발소리 재생, 무기 타격 지점 설정 등) 이는 애님 블루프린트의 이벤트 그래프에서 수신하여 게임플레이 로직을 트리거할 수 있습니다.

스테이트 머신은 캐릭터 애니메이션의 복잡한 흐름을 시각적으로 단순화하고, 게임의 논리적인 상태에 따라 애니메이션을 체계적으로 전환할 수 있게 해주는 강력한 도구입니다. 대부분의 캐릭터 애니메이션은 이 스테이트 머신을 기반으로 구현됩니다.


이번 절에서는 애니메이션 블루프린트의 핵심인 스테이트 머신의 기본 개념과 Idle, Walk, Run 예시를 통한 활용 방법을 자세히 알아보았습니다. 스테이트 머신은 캐릭터 애니메이션의 흐름을 제어하는 데 필수적인 요소입니다.

목차