info8995 님의 블로그

언리얼 엔진 AI 애니메이션 블루프린트 및 스테이트 머신 구현 본문

TIL(Today I Learned)/Unreal Engine

언리얼 엔진 AI 애니메이션 블루프린트 및 스테이트 머신 구현

info8995 2025. 4. 30. 20:16

배운 점

오늘은 언리얼 엔진에서 AI 캐릭터의 애니메이션을 제어하기 위한 커스텀 애니메이션 블루프린트 설계 및 스테이트 머신 구현 방법을 배웠다. AIController와 연동하여 원하는 타이밍에 원하는 애니메이션이 실행되도록 하는 로직을 구성해보았다.


1️⃣ 애니메이션 리소스 점검

  • 제공된 애셋: 0_Anim_Model_SKM, Idle, Running, Punch_Combo, Dance, Death 애니메이션
  • 만약 없다면: Mixamo, Marketplace, Animation Starter Pack 등에서 다운로드

2️⃣ 애니메이션 블루프린트 구성 (ABP_FriendCharacter)

● 주요 이벤트 노드

  • BlueprintInitializeAnimation: 시작 시 1회 호출 → MovementComponent 참조
  • BlueprintUpdateAnimation: 매 Tick마다 호출 → 속도 측정 및 상태 갱신

● 상태 트리거용 변수 및 이벤트

  • IsAttack, IsDead, ShallWeDance (bool)
  • 각각에 대응하는 Custom Event 생성 → Delay 후 false로 초기화

● Delay 시간 계산

markdown
복사편집
= 애니메이션 프레임 수 / FPS 예: 180프레임 / 30fps → 6초

또는 에디터에서 애니메이션 툴팁으로 확인 가능


3️⃣ 애니메이션 스테이트 머신 설계

● Basic State Machine (기본 이동)

상태애니메이션전환 조건
Entry - Idle (기본)
Idle 1_Fighting_Idle ShouldRun = true → Run
Run 5_Running ShouldRun = false → Idle

● Acting State Machine (행동)

상태애니메이션전환 조건
State Idle/Run IsAttack=true → Attack
ShallWeDance=true → Dance
IsDead=true → Death
Attack 3_Punch_Combo IsAttack=false → State
+ ShallWeDance=true → Dance
+ IsDead=true → Death
Dance 4_Hip_Hop_Dancing ShallWeDance=false → State
+ IsAttack=true → Attack
+ IsDead=true → Death
Death 2_Death 전환 없음
  • Death 상태는 종료 지점이며 다시 전환 불가
  • Attack ↔ Dance 전환 조건:
    • Attack → Dance: IsAttack = false && ShallWeDance = true
    • Dance → Attack: ShallWeDance = false && IsAttack = true

4️⃣ 애니메이션 테스트 (Level Blueprint)

  • 키 입력 (예: 키보드 I, O, P 등)으로 각 변수 값 변경
  • AI 캐릭터의 애니메이션 상태 전이 정상 작동 여부 확인

✅ 마무리

이 과정을 통해 커스텀 스테이트 머신과 애니메이션 블루프린트의 연계를 이해하고, AIController를 통해 애니메이션을 제어할 수 있는 구조를 설계할 수 있게 되었다. 게임 내 AI가 상황에 맞는 애니메이션을 재생하는 기본 로직을 구성할 수 있는 기반을 마련했다.