
오른쪽 화살표 함수 처럼 OnCompleted, OnInterrupted, OnNotifyBegin 함수를 활용하려면 UAnimInstance 클래스를 써야한다.
//전방 선언
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"));
//여기에 함수 죄다 넣어야 함
}