* 애니메이션 노티파이 : ex) 칼을 휘두룰때 특정 시점에 소리가나도록
directX : 시간을 재면서 특정시간경과 -> 소리재생 ...
언리얼 : 노티파이 => 알림을 보내는 방식
* 구현
1. 몽타주 블루프린트 :: 새 노티파이를 소리재생원하는 위치에 두기
2. 애님인스턴스 :: 함수추가, 할일추가(사운드, 로그 ...)
private:
UFUNCTION()
void AnimNotify_AttackHit();
함수이름을 맞춰줘야함. AnimNotify_내가정한 노티파이이름()
void UMyAnimInstance::AnimNotify_AttackHit()
{
UE_LOG(LogTemp, Log, TEXT("AnimNotify_AttackHit"));
}
* 몽타주를 평타모션3개로 나눠 순차실행 구현
1. 몽타주 블루프린트::새 몽타주 섹션만들기
2. 링크끊기
3. 캐릭터::AttackIndex 0,1,2 순환되도록 구현
void AMyCharacter::Attack()
{
//델레게이트
if (IsAttaking) return;
Animinstance->PlayAttackMontage();
AttackIndex = (AttackIndex + 1) % 3;
IsAttaking = true;
}
4.애님인스턴스::
GetAttackMontage(인덱스) : 1입력 -> Attack1을 리턴 // =>인덱스에 해당하는 몽타주섹션이름 리턴
JumpToSection(섹션이름,대상몽타주) : 인덱스에 해당하는 몽타주섹션 얻음, 해당 섹션으로 바꿈.
void UMyAnimInstance::JumpToSection(int32 SectionIndex)
{
FName Name = GetAttackMontageName(SectionIndex);
Montage_JumpToSection(Name, AttackMontage);
}
FName UMyAnimInstance::GetAttackMontageName(int32 SectionIndex)
{
return FName(*FString::Printf(TEXT("Attack %d"), SectionIndex));
}
5. 캐릭터에서 애님인스턴스함수(Jump) 호출
void AMyCharacter::Attack()
{
//델레게이트
if (IsAttaking) return;
Animinstance->PlayAttackMontage();
Animinstance->JumpToSection(AttackIndex);
AttackIndex = (AttackIndex + 1) % 3;
IsAttaking = true;
}
'UE5' 카테고리의 다른 글
충돌 기초 (0) | 2022.08.15 |
---|---|
블렌드 스페이스 (0) | 2022.08.14 |
델레게이트 (0) | 2022.08.14 |
애니메이션 몽타주 (0) | 2022.08.14 |
스테이트 머신 (0) | 2022.08.14 |