주요 구현 내용

  • 인터페이스 구현
    • IInterface_DamageableIInterface_EnemyAI를 상속받아, 피해 처리, 체력 관리, 공격 토큰 예약/반환, 이동 속도 제어 등 AI의 다양한 동작을 통합적으로 구현했습니다.
  • 컴포넌트 구성
    • AIBehaviorsComponentDamageSystemComponent를 생성하여 AI의 행동 로직과 피해/체력 관리 기능을 분리하여 모듈화하였습니다.
    • HealthWidgetComponent를 추가하여 체력 정보를 UI로 표시할 수 있도록 했습니다.
  • 애님 몽타주 재생 및 이벤트 처리
    • 피해 발생 시 적절한 히트 리액션 몽타주(HitReactionMontage 또는 StaggerMontage)를 선택하여 재생했습니다.
    • Montage_SetEndDelegate를 사용해 몽타주 재생이 끝났을 때(OnCompleted 혹은 OnInterrupted) 후속 처리를 진행하도록 하였습니다.
    • 재생된 몽타주를 멤버 변수(LastHitResponseMontage)에 저장하고, 피해를 준 액터(PendingDamageCauser)도 임시 저장하여 몽타주 종료 후 공격 상태 전환 로직에 활용했습니다.
  • 블록(방어) 처리
    • 피해가 블록 가능할 경우 일정 확률(BlockChance)에 따라 블록 동작을 시작하고, BlockMontage를 재생합니다.
    • 블록 종료 시 타이머를 이용해 EndBlock 함수를 호출하고, OnBlockEnded 델리게이트를 방송하여 블루프린트에서 추가 처리를 할 수 있도록 했습니다.
  • 델리게이트 활용
    • OnAttackEnd, OnWeaponEquipped, OnWeaponUnEquipped, OnBlockEnded 등 다양한 델리게이트를 선언하여, 공격이나 블록 상태 변화 시 이벤트를 발생시켰습니다.

구현하면서 배운 점

  1. 인터페이스 기반 설계
    • Damage와 AI 관련 동작들을 인터페이스를 통해 표준화하면, 추후 다양한 AI 캐릭터가 일관된 방식으로 동작할 수 있다는 점을 확인했습니다.
  2. 애님 몽타주 이벤트 처리
    • Montage_SetEndDelegate를 통해 몽타주 재생 종료 시점에 필요한 로직을 실행할 수 있으며, 이를 이용해 공격 전환이나 상태 업데이트를 깔끔하게 처리할 수 있음을 배웠습니다.
    • 또한, 임시로 DamageCauser와 재생된 몽타주를 저장하여 이후 비교하는 기법을 통해, 여러 애님 몽타주가 동시에 재생될 수 있는 상황에서도 올바른 처리를 할 수 있게 되었습니다.
  3. 타이머와 델리게이트의 활용
    • 블록 동작의 경우, 타이머를 이용해 일정 시간 후 자동으로 블록을 종료시키고, 델리게이트를 통해 상태 변경을 알리는 방식을 적용했습니다.
    • 이를 통해 단순한 시간 기반 로직도 깔끔하게 구현할 수 있음을 느꼈습니다.

'UnrealCamp' 카테고리의 다른 글

12주차 Day5  (0) 2025.03.07
12주차 Day2  (0) 2025.03.04
10주차 Day2 AEnemyAIController로 적 AI 상태 제어하기  (0) 2025.02.18
9주차 Day2 AI시스템  (0) 2025.02.11
7주차 Day4 [캐릭터 #2 코스메틱]  (0) 2025.01.30

+ Recent posts