[DAY106] SoulslikeProject(9) - AI Perception Detection Score

베리투스·2026년 2월 9일

TIL: Today I Learned

목록 보기
90/93

✅ 오늘 한 일 (Done)

  • Detection Score 시스템 구현: 적이 플레이어를 감지하자마자 즉시 공격하는 것이 아니라, 긴장감을 주기 위해 점수(0~100)가 차오르는 시스템 구축.
  • 감각별 점수 로직 분리:
    • 시각(Sight): 플레이어가 시야에 머무는 동안 타이머(Timer)를 돌려 점수를 점진적으로 누적.
    • 청각/피격(Others): 소리를 듣거나 맞았을 때는 일회성 점수(+20, +50 등)를 즉시 부여.
  • 전투 돌입 조건 설정: Detection Score가 100점에 도달했을 때만 Combat State로 전환하고 Set Focus를 실행하도록 제한.

💣 트러블 슈팅 (Issue & Fix)

  • 문제: 플레이어를 발견했다가 놓치는 순간, 혹은 다시 발견하는 순간에 점수가 오르면서 동시에 내려가는 등 로직이 꼬여 게이지가 진동하는 현상 발생.
  • 원인: 감지 성공 시 실행되는 타이머와, 감지 실패(놓침) 시 실행되는 타이머가 동시에 돌아가면서 서로 충돌함.
  • 해결:
    1. 감지 성공(Sensed): Lost Timer Handle을 즉시 Clear하고, Sensed Timer를 시작.
    2. 감지 실패(Lost): Sensed Timer Handle을 즉시 Clear하고, Lost Timer를 시작.
      -> 두 상태가 절대 동시에 실행되지 않도록 상호 배타적(Mutually Exclusive)으로 핸들을 관리함.

💡 핵심 코드 (Key Logic - Blueprint)

  • Event Node: On Target Perception Updated

  • Logic Flow (Timer Swap):

    1. Branch (Sensed?): Successfully Sensed가 True인가?
      • True (발견):
        • Clear Timer (Lost Handle)놓침 타이머 삭제
        • Set Timer (Sensed Handle)감지 타이머 시작 (점수 증가)
      • False (놓침):
        • Clear Timer (Sensed Handle)감지 타이머 삭제
        • Set Timer (Lost Handle)놓침 타이머 시작 (점수 감소)
  • Combat Trigger:

    • 타이머 함수 내부에서 점수가 갱신될 때마다 Score >= 100? 체크.
    • True라면 → Enter Combat Mode (AI State 변경, Set Focus).

profile
Shin Ji Yong // Unreal Engine 5 공부중입니다~

0개의 댓글