공부/Unity

24.05.23

월러비 2024. 6. 9. 13:17

작업 내용

  1. Perception (탐지)
    1. ViewAngle (시야각 탐지)
    2. 시간에 의해 탐지 객체 제거
  2. AI
    1. Approach
    2. Equip
      1. Sword
    3. Action
      1. Sword

 

  • 순찰 시야각 감지 및 추적(직접 다가가는건 아니고 탐지하고 감지범위 안에 어디에 있는지만), 눈으로 확인할 수 있도록 Gizmos를 이용하여 직접 확인
  • PerceptionComponent - 시야각 감지 ‘ 추적(감지 범위와 시야각 안에 들어온 추적대상 추적) ‘ 시야각 직접 확인할 수 있게 OnDrawGizmosSelected로 직접 확인

 

  • if(p1 == p2) (p1과 p2는 GameObject 일때)가 true라면 ‘둘은 같은 객체로 취급한다’
  • 추적탐지 된 플레이어 추격 기능 구현
  • 추적 탐지 시간 관련 설명
    • 플레이어가 탐지 범위 밖으로 벗어나면 곧바로 탐지가 풀려서 PatrolMode로 돌아가니 일정 시간동안 추적을 계속하고 놓치면 Patrol로 돌아가게 한다.
    • 딕셔너리에 시간을 왜 넣는지 찾아보는 것이다. (PerceptionComponent)
  • PerceptionComponent ‘ AIController - 수정

SetDestination

  • SetDestination : 타겟의 위치를 줘서 지속적으로 따라가게끔 만드는 함수
  • navMeshPath와 다른점 : Path는 정해진 경로를 줘서 그 안에서만 이동하는 것이고, Destination은 타겟을 추적하여 실시간으로 위치를 갱신하는 이동이다.

탐지 벗어나도 쫒아가는 기능

  1. 현재 감시 성공 리스트 ⇒ percievedColliders
  2. 감시 중 리스트에 추가
    1. 현재 감시에 걸린 대상자(percevedColliders)가 감시 대상 리스트(candidateList)에 있다면? ⇒ 아무것도 안한다.
    2. 현재 감시에 걸린 대상자(percevedColliders)가 감시 대상 리스트(candidateList)에 없다면? ⇒ 감시 대상 리스트(candidateList)에 추가한다.
      1. 이때, 현재 시간을 기록한다.
    3. 감시 중 리스트에서 현재 감시 안된 객체 제거 (removeList)
      1. 삭제 대상을 선정 해놓고, (현재시간 - 최종) > 우리가 지정한 시간(탐지 범위를 벗어나도 쫒아가는 시간) 이 조건이 된다면 ⇒ 이때 리스트 안에있는 객체를 제거한다.
      2. 이렇게 하면 감시중 거기에서 있다 없다 판단할 필요가 없게 된다. (좀 더 깔끔하고 편해진다)

 

  • C# xml 주석 이라고 검색하면 문서 주석에 관련된 설명을 볼 수 있다.
  • 딕셔너리를 이용한 탐지 대상 추가 및 제거
  • 주석 정리 어떻게 하는지 설명
  • 추격 범위를 벗어나도 2초동안은 계속 추적할 수 있게하고 2초 후에도 벗어나있으면 추적정지
  • AI 상태 변경 Action 이벤트 연결 ‘ 진짜 변경하는지 Debug.Log로 확인
  • PerceptionComponent ‘ AIController - 추격 기능 및 감시 대상자 추가 및 삭제 수정
  • Enemy - Action 이벤트 연결 수정

Ai

  • NPC는 무기를 안드니 WeaponComponent가 필요 없다.
    • 따라서, NPC는 NPC용 AIController를 따로 만드는 것이 좋다.

 

  • 무기 장착 ‘ 공격 1회 실행
  • WeaponComponent - OnEndEquip 이벤트 추가
  • AIController ‘ Enemy - 모드변경 수정

 

  • 무기 해제 ‘ 공격 계속하기 ‘ 공격 대기시간 넣어서 랜덤한 시간동안 대기했다가 다시 공격하기
  • WeaponComponent - EndDoAction 이벤트 추가
  • AIController ‘ Enemy - 이벤트 추가

공격 대기 시간

  • 공격은 계속해서 떄리는 것이 아니라 잠시 멈췄다가 다시 때려야한다.

'공부 > Unity' 카테고리의 다른 글

24.05.27  (0) 2024.06.09
24.05.24  (0) 2024.06.09
24.05.22  (0) 2024.06.09
24.05.21  (0) 2024.06.09
24.05.20  (0) 2024.06.09