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

스테이트 머신의 기본 활용


지난 절에서 애님 그래프의 기본적인 구성 요소를 살펴보면서 상태 머신(State Machine) 이 캐릭터 애니메이션 제어의 핵심이라는 점을 강조했습니다. 이번 절에서는 이 상태 머신을 더욱 깊이 이해하고, 실제 캐릭터의 움직임을 기반으로 애니메이션 상태를 관리하는 방법을 알아보겠습니다.


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

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

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

스테이트 머신이 필요한 이유:

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

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

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

  1. 상태 (State)

    • 캐릭터의 특정 행동을 나타내는 상자 모양의 노드입니다. 각 상태 안에는 해당 상태에서 재생될 애니메이션 로직(애니메이션 시퀀스, 블렌드 스페이스 등)이 들어갑니다.
    • 진입점(Entry Point): 스테이트 머신에 처음 진입할 때 시작되는 기본 상태입니다.
  2. 전환 규칙 (Transition Rule)

    • 두 상태를 연결하는 화살표 모양의 선입니다. 이 선은 한 상태에서 다른 상태로 전환될 수 있는 경로를 나타냅니다.
    • 전환 규칙을 더블클릭하면 해당 전환이 발생할 조건을 정의하는 별도의 그래프(Transition Graph)가 열립니다.

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

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

필요한 에셋

  • Idle 애니메이션 시퀀스 (예: SKM_Mannequin_Idle)
  • Walk_Run_BlendSpace (2D 블렌드 스페이스, X축: Speed, Y축: Direction (선택 사항), 포함 애니메이션: Walk, Run)

애님 블루프린트 설정

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

  2. 이벤트 그래프 설정 (변수 업데이트)

    • 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 변수는 나중에 스테이트 머신의 전환 규칙과 블렌드 스페이스에서 사용됩니다.)
    • 컴파일 및 저장합니다.
  3. 애님 그래프 - 스테이트 머신 설정

    • 애님 그래프 탭으로 이동합니다.
    • 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 예시를 통한 활용 방법을 자세히 알아보았습니다. 상태 머신은 캐릭터 애니메이션의 흐름을 제어하는 데 필수적인 요소입니다.