이번 게시물을 저번 게시물을 이어서, AI의 시야에 따른 행동을 구현한다.

https://gamdekong.tistory.com/211

 

Character AI Behavior Tree

https://gamdekong.tistory.com/category/%EC%96%B8%EB%A6%AC%EC%96%BC%20%EC%97%94%EC%A7%84 '언리얼 엔진' 카테고리의 글 목록 배움. gamdekong.tistory.com 작업은 위 게시물을 이어서 한다. 우선 Behavior Tre..

gamdekong.tistory.com

 

우선 Enemy가 패트롤을 하면서 총알을 볼 경우 인식하기 위한 총알 Actor를 생성한다.

생성후, 해당 Actor를 AI가 인식하게 하기 위해서, Actor에 AIStimuliSourceComponent를 붙여준다.

Static Mesh또한 추가하여 원하는 매쉬로 설정한다. 여기서는, 총알을 사용하였다.

Detail tap 다음과 같이 설정을 바꿔준다.

- Auto Register as Source는 자동적으로 이 엑터를 소스로 등록시켜주고,

- Source for Senses는 AIPerseption의 어떠한 센스에 인식될것인지를 설정해준다.

 

 

다음은 EnemyController를 수정하여 AIPerception을 사용할수 있도록, AIPerceptionComponent를 EnemyController에 추가한다.

 

먼저 기존에 만든 EnemyController C++파일을 상속하여 블루프린트를 만들어준다.

 

그리고 만든 BP_EnemyController를 사용하기 위해서 Enemy 의 컨트롤러를 변경한다.

 

컨트롤러에 다음과 같이 AIPerception을 추가한다.

 

추가후, 다음과 같이 수정한다.

 

Senses Config에 AI SIght config를 추가하여 Sight를 인식할수 있게 변경하고,

시야 거리와 시야각을 설정한다.

 

또한, Detection By Affiliation을 수정한다. 기본적으로 모든 중립체를 인식할 수 있도록 Detect Neutrals를 채크한다.

따로 설정하지 않으면 모든 Entity들은 중립이다.

(이부분은 따로 공부를 해야한다. 기본적으로 255개의 팀이 있고, 디폴트로 모든 Entity는 255팀에 속한다.

또한, 이 255팀에 속한 Entity는 중립이다.)

 

 

다음은, EnemyController가 무언가를 인식했을때 불러지는 이벤트를 작성하자.

EnemyController 블루프린트를 열어 다음과 같이 수정한다.

 

AIPerceprion 의 이벤트를 구현한다.

 

컴파일후 총알을 맵에 생성후, Enemy가 총알을 본다면 I SEE SOME AMMO가 프린트 되는것을 알 수 있다.

 

 

 

다음은 Enemy가 플레이어를 볼 경우를 추가해보자.

EnemyController를 다음과 같이 수정한다.

 

기존에 총알과 다르게 Pawn은 자동으로 Detection 되기 때문에 따로 AIStimuliSourceComponent를 추가하지 않아도 된다.

 

위와같이 추가하면, Enemy가 Player를 보면 I SEE YOU가 출력된다.

 

 

 

다음은 Sound를 감지 할 수 있도록 EnemyController를 수정한다.

 

다음은, Player가 총을쏠때 사운드와 노이즈를 발생시켜보자.

 

기존의 총알 발사 로직에 추가로 붙여 넣는다.

 

 

컴파일후 게임을 실켜 총알 을 발사하면 사운드와 글자출력을 볼 수 있다.

 

+ Recent posts