[언리얼] C++ - 몽타주

gest·2026년 1월 7일

unreal

목록 보기
6/11


오른쪽 화살표 함수 처럼 OnCompleted, OnInterrupted, OnNotifyBegin 함수를 활용하려면 UAnimInstance 클래스를 써야한다.


코드

header 파일

//전방 선언
class AAIController;
struct FBranchingPointNotifyPayload;


UFUNCTION() //몽타주의 delegate에 추가하려면 필수다.
void OnAttackMontageEnded(UAnimMontage* Montage, bool bInterrupted);

UFUNCTION() //필수
void OnNotifyBeginReceived(FName NotifyName, const FBranchingPointNotifyPayload& BranchingPointPayload);

//BeginPlay
UAnimInstance* animInstance = Cast<UAnimInstance>(GetMesh()->GetAnimInstance());
if (animInstance)
{
	//OnCompleted, OnInterrupted
	animInstance->OnMontageEnded.AddDynamic(this, &AEnemy::OnAttackMontageEnded);
    
    //신호
    animInstance->OnPlayMontageNotifyBegin.AddDynamic(
    	this, &AEnemy::OnNotifyBeginReceived
    ); 
}


//공격 몽타주 애니메이션이 끝났다면
void AEnemy::OnAttackMontageEnded(UAnimMontage* Montage, bool bInterrupted)
{
	UE_LOG(LogTemp, Log, TEXT("OnAttackMontageEnded"));
	PPAPCanAttack = true;
}

void AEnemy::OnNotifyBeginReceived(FName NotifyName, const FBranchingPointNotifyPayload& BranchingPointPayload)
{
	UE_LOG(LogTemp, Log, TEXT("attack signal"));
	//여기에 함수 죄다 넣어야 함
}

0개의 댓글