반응형
기존에 프로젝트를 진행하며 애니메이션을 실행하는 함수에서 게임플레이 태그를 추가하고,
애니메이션 몽타주에서 애님 노티파이를 통해 게임 플레이 태그를 제거하는 방법을 사용했는데 여러 문제가 발생했다.
전투의 복잡성이 증가할수록 애니메이션이 끝까지 재생되지 않고 중단되는 경우가 있는데, 이 때 게임플레이 태그가 삭제되지 않아 상태가 제대로 관리되지 않는 문제가 있었다.
해당 문제를 해결하기 위해, 애님 노티파이로 상태를 관리하는 기존의 방식을 버리고
애님 인스턴스를 직접 가져와 몽타주가 끝났을 때 호출되는 델리게이트에서 태그를 제거하는 방식으로 상태를 관리하게 바꿨다.
이렇게 하면 재생 중인 몽타주가 어떠한 사유로 끝까지 실행되지 못하고 중단되어도 델리게이트를 통해 바인딩한 함수를 항상 호출해줌으로써 상태 관리가 잘 된다.
애니메이션을 실행할 때는 더 이상 ACharacter::PlayMontage가 아닌 UAnimInstance::Montage_Play로 대체하고
UAnimInstance::OnMontageEnded 델리게이트에 종료 함수를 바인딩한다.

종료 함수에서 바인딩된 델리게이트를 제거하고, 상태를 관리하는 태그도 함께 제거한다.

람다 버전

반응형
'Unreal Engine > 기능 구현' 카테고리의 다른 글
| [Unreal Engine 5] 점프가 있는 애니메이션 (1) | 2025.10.25 |
|---|---|
| [Unreal Engine 5] 메인 스켈레탈 메시 렌더링 표시 해제 및 애니메이션 재생 (0) | 2025.10.21 |
| [Unreal Engine 5] 피격 방향 구하기 (0) | 2025.10.19 |
| [Unreal Engine 5] 데미지 적용 (0) | 2025.10.19 |
| [Unreal Engine 5] 공격 충돌체 (0) | 2025.10.19 |
