스켈레탈 컴포넌트에 애니메이션을 지정해서 사용할 수 있다.
스켈레탈 애니메이션이 동작하는 방법은 크게 3가지 방식이 있다.

Use Animation Blueprint
UAnimInstance 상속 Use Animation Asset
Use Custom Mode

애니메이션 블루프린트를 만들고, 부모 클래스는 UAnimInstance를 상속받아 구현한 PlayerDefaultAnimInstance를 지정한다.


애님 그래프는 "최종 Output Pose"를 만드는 흐름을 시각적으로 표현한다.

애니메이션을 상황별로 나눠 전환할 수 있다.
예: Idle ↔ Run ↔ Sprint


예)
MoveSpeed > 0 → Idle → Run 전환 MoveSpeed <= 0 → Run → Idle 전환 
PlayerDefaultAnimInstance에 속도 변수를 추가한다.
// PlayerDefaultAnimInstance.h
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Movement")
float MoveSpeed;
업데이트 함수에서 Pawn의 이동 속도를 가져온다.
void UPlayerDefaultAnimInstance::NativeUpdateAnimation(float DeltaSeconds)
{
Super::NativeUpdateAnimation(DeltaSeconds);
APawn* OwnerPawn = TryGetPawnOwner();
if (OwnerPawn)
{
FVector Velocity = OwnerPawn->GetVelocity();
MoveSpeed = Velocity.Size();
}
}
TryGetPawnOwner() → AnimInstance가 붙은 캐릭터를 얻음GetVelocity().Size() → 속도 벡터의 크기를 계산 (이동 속도)
SkeletalMeshComponent의 Animation Mode를 Use Animation Blueprint로 설정ABPTest로 지정C++에서도 지정할 수 있다.
static ConstructorHelpers::FClassFinder<UAnimInstance> AnimBPClass(TEXT("/Game/Animation/ABPTest.ABPTest_C"));
if (AnimBPClass.Succeeded())
{
GetMesh()->SetAnimInstanceClass(AnimBPClass.Class);
}
_C 붙여야 AnimBlueprint의 클래스 정보를 가져올 수 있음
AnimSequence vs AnimMontage
AnimSequence: 단일 모션 (Idle, Run, Attack 등)AnimMontage: 특정 상황에 재생하는 애니메이션 (스킬, 공격, 컷신 등)AnimInstance 업데이트
NativeUpdateAnimation: 게임 스레드에서 호출NativeThreadSafeUpdateAnimation: 애니메이션 스레드에서 호출Transition Rule Best Practice
→ 실제 게임 개발에서는 대부분 AnimBlueprint 기반으로 작업하고, 필요할 때 Montage로 스킬/공격 모션을 처리한다.