언리얼 엔진

Unreal Engine - 애니메이션 몽타주를 활용한 상황별 연출 구현 정리

로안님 2025. 4. 17. 13:12

🎮 언리얼 엔진 애니메이션 몽타주를 활용한 상황별 연출 구현 정리

이번 포스트에서는 언리얼 엔진에서 애니메이션 몽타주(Animation Montage) 를 활용해 캐릭터가 상황에 따라 애니메이션을 다르게 재생하도록 구현한 방법을 정리합니다. 에디터 설정과 C++ 코드 연동까지 실제 제작 흐름을 중심으로 설명합니다.


✅ 목표

  • 피격 상황에서 방향에 따라 다른 애니메이션 몽타주 재생
  • 에디터에서 미리 애니메이션을 설정하고, C++에서 재생 로직 처리

🔧 에디터 세팅

먼저 ABaseAIFighter 클래스에 다음과 같이 피격 애니메이션 몽타주를 선언합니다:

UPROPERTY(EditDefaultsOnly, Category = "Animation|Hit")
UAnimMontage* KnockMontage_Forward;

UPROPERTY(EditDefaultsOnly, Category = "Animation|Hit")
UAnimMontage* KnockMontage_Backward;

그 후 블루프린트 에디터의 Details 패널에서 해당 변수에 미리 만들어둔 AM_Knock_Fwd, AM_Knock_Bwd 애니메이션을 지정합니다.


🧠 C++ 로직 구현

C++에서는 상황(피격 방향)에 맞춰 애니메이션을 선택적으로 재생합니다. 핵심 코드는 다음과 같습니다:

void ABaseAIFighter::TakeDamage(int32 DamageAmount, ESmashAttackType AttackType, bool bIsRightDirection)
{
    // 상황에 맞는 애니메이션 재생
    UAnimInstance* AnimInst = GetMesh()->GetAnimInstance();
    if (AnimInst)
    {
        if (bIsRightDirection && KnockMontage_Backward)
        {
            AnimInst->Montage_Play(KnockMontage_Backward);
        }
        else if (!bIsRightDirection && KnockMontage_Forward)
        {
            AnimInst->Montage_Play(KnockMontage_Forward);
        }
    }
}

🎬 핵심 포인트 요약

요소 설명

애니메이션 몽타주 변수 선언 UPROPERTY로 에디터에서 설정 가능하게 함
Details 패널 세팅 디자이너가 블루프린트 상에서 쉽게 애니메이션 지정
C++에서 상황 판별 방향 정보 등 상황에 따라 몽타주 선택 재생

✨ 확장 가능성

  • 공격 종류(AttackType)에 따라 애니메이션 종류를 세분화 가능
  • 넉백 연출(LaunchCharacter)이나 이펙트 재생도 추가 가능
  • Multicast 함수로 네트워크 플레이 연출에도 대응 가능

📝 마무리

애니메이션 몽타주는 상황별 애니메이션을 손쉽게 관리하고 재생할 수 있는 강력한 도구입니다. 이번처럼 에디터와 코드 양쪽에서 활용하면, 디자이너와 프로그래머 모두 협업이 쉬워지고, 게임의 연출력도 확연히 향상됩니다. 💥