[DAY101] SoulslikeProject(4) - Async Attack Delegates

베리투스·2026년 1월 26일

TIL: Today I Learned

목록 보기
87/93

✅ 오늘 한 일 (Done)

  • 비동기 공격 흐름 제어: FOnPerformAttackEndDelegate 델리게이트를 생성하여, 몽타주 애니메이션 종료 시점을 비헤이비어 트리가 인지하도록 구현.
  • 무기 장착 시스템: 몬스터 메쉬의 손 뼈(Hand Bone)에 소켓을 추가하고 검(Sword) 메쉬를 부착하여 시각적 완성도 향상.
  • 몽타주 상태 연동: Play Montage 노드의 On Completed, On Interrupted 이벤트를 델리게이트와 연결하여 애니메이션이 완전히 끝난 후 로직이 종료되도록 설정.

💣 트러블 슈팅 (Issue & Fix)

  • 문제: 몬스터가 칼을 휘두르는 애니메이션 도중에 갑자기 이동하거나 회전하는 등 다음 행동을 수행해버림.
  • 원인: BT Task 내에서 몽타주 재생 함수를 호출한 뒤, 애니메이션이 끝나는 것을 기다리지 않고 즉시 Finish Execute가 호출되었기 때문.
  • 해결: 커스텀 델리게이트(OnPerformAttackEnd)를 만들어 몽타주의 종료 시점(Completed/Interrupted)에 Broadcast하고, 이를 감지했을 때만 Finish Execute를 호출하도록 수정.

💡 핵심 코드 (Key Logic)

  • Code Snippet:
// 몽타주 종료 신호를 보낼 델리게이트 선언
DECLARE_DYNAMIC_MULTICAST_DELEGATE(FOnPerformAttackEndDelegate);

// AI 캐릭터 클래스 내부
UPROPERTY(BlueprintAssignable, VisibleAnywhere, BlueprintReadWrite, Category = "AI")
FOnPerformAttackEndDelegate OnPerformAttackEnd;

// 이후 BP에서 몽타주의 OnBlendOut/OnInterrupted 핀에 이 델리게이트 호출을 연결
profile
Shin Ji Yong // Unreal Engine 5 공부중입니다~

0개의 댓글