언리얼엔진/블루프린트

AI 플레이어 감지하기

season97 2023. 10. 12. 19:29

▶ PawnSensing 

 

ㆍ 기본적인 이벤트 외에 추가적인 이벤트 트리거를 제공하는 컴포넌트

 

ㆍ 폰의 감각 컴포넌트라고 불리며 액터의 감각 설정과 기능을 담은 집합체라고 할 수 있다.

 

※ EQS? 

 

ㆍ 언리얼에서는 실험단계로 폰에게 심어두는것이 아닌 환경에 심어두는 케이스 따라서 매우무겁다

 

ㆍ 환경에 심어둔 노드에 플레이어가 들어오면 시야에 들어왔다고 판단.

 

▶  이 폰센싱을 이용해 플레이어를 감지해 보자

 

ㆍ 먼저 플레이어 컨트롤러로 들어간다.

 

폰센싱 컴포넌트 추가

ㆍ 컴포넌트 탭에 추가를눌러 pawn을 검색하면 폰 감지 컴포넌트가 들어온다. 추가해주자

 

필요한 노드 연결

ㆍ 추가한 폰 감지 컴포넌트를 클릭한 후 노드에 on see pawn을 검색하면 폰 보기 시 라는 이벤트가 들어온다.

 

ㆍ 위와같이 연결해주자. 플레이어가 필요하니 BP_FirstPersonCharacter를 추가해주고 블랙보드와 연결해주었다.

 

ㆍ 추후 블랙보드(뇌)에 만들 PlayerActor를 리터럴네임으로 미리 추가해주자 

 

블랙보드에 PalyerActor추가

 

ㆍ 블랙보드로 와서 PlayerActor키를 추가해주고 베이스클래스를 Actor로 설정해주었다.

 

ㆍ 이제 뇌에다 추가해주었으니 행동트리에 알려줘야 할 것 같다.

 

행동트리 노드연결

ㆍ 스퀀스를 제일 왼쪽에 준 이유는 플레이어를 감지했을 경우 하던 행동을 멈추고 플레이어를 추적해야한다.

 

ㆍ 따라서 제일 왼쪽에 두고 아래쪽 테스크 노드는 감지가 풀렸을경우 다시 정찰을 하게 하기 위함이다.

 

데코레이터 Blackboard

ㆍ 하던 행동을 멈추게 하기위해 우클릭을 눌러 데코레이터 추가 Blackboard를 해줫다

중단해주게 하기

ㆍ 만든 블랙보드를 보면 디테일탭에 옵션이 들어오는걸 볼 수 있다.

 

ㆍ 관찰자 중단을 Lower Priorty로 바꿔주고 블랙보드 키를 PlayerActor로 바꿔준다

 

ㆍ 이렇게하면 플레이어를 감지했을 경우 이 노드만 실행된다.

 

ㆍ 클릭해보면 옆의 시퀀스들이 파란색으로 들어오면서 플레이어를 감지했을때는 발동하지 않는다.

 

태스크 만들기

ㆍ 플레이어가 시야에서 사라졌을땐 감지를 풀고 다시 패트롤 하기 위해선 커스텀노드가 필요하다.

 

ㆍ새 태스크노드를 만들고 아래와같이 노드를 연결해주자.

Reset

ㆍ Key변수는 블랙보드 키 선택 타입이다.

결과 화면

ㆍ 최종적으로 플레이어가 시야에 들어오면 감지해서 추적하는 모습을 볼 수 있다.

 

※ 가까히 왔을때 공격하는것과 소리로 감지하는것 또한 추가해 봐야겠다.

※ 행동트리랑 애너미 컨트롤러에 소리에 대한 값을 설정해주고 적 캐릭터 블루프린터에 별도의 노드를 연결해줘야 할 것 같다.

'언리얼엔진 > 블루프린트' 카테고리의 다른 글

델리게이트  (0) 2023.10.12
언리얼 엔진 AI  (2) 2023.10.10
UI를 이용한 플레이어 스탯 연동  (0) 2023.10.08
보간과 타임라인을 이용한 움직이는 발판  (0) 2023.10.08
엑터 패트롤 시키기  (0) 2023.10.08