BehaviorTree에 대하여

 

Unreal에 상태에 따른 실시간 변환을 하기위해 좋은 도구이다.

많은 이들이 BehaviorTree로 Ai를 만드는데 사용하며 이로직을 어떻게 사용하는지 알아보도록 하자

 

add에 이러한 behavior tree를 볼 수 있으며 선택하여 생성해 주도록 한다.

생성후 안을 보면 이렇게 3개의 컴포넌트를 볼 수 있다.

1. Selector

셀랙터의 경우 하나가 실행할때 까지 다음으로 넘어가는 방식을 취한다.

성공을 하면 다음 노드를 실행하지 않으며 이러한 방식으로 status를 적용하여 상태에 따른 로직을 만들 수 있다.

[상위는 첫 wait만 실행이 될것이다]

2. Sequence

실행되면 다음 노드를 실행한다

Sequence는 앞의 노드가 정상적으로 실행 되면 다음 노드도 실행을 한다.

[상위 로직은 3wait가 모두 실행 될 것이다.]

 

이제 하나의 캐릭터를 만들어 실험해보자

캐릭터 하나를 복사하여 뇌를 심어보자

 

블랙보드도 생성하여 한쌍으로 뇌를 준비를 한다

 

 

블랙보드는 Behavior Tree에 여러가지 변수를 저장하는 곳이다.

이와같이 변수를 저장하고 있고 추가도 해줄 수 있다.

상세한 정보를 보면 base Class라는 Objecy type을 선택해 줄 수 있다.

나는 AttackTarget이라는 것을 만들고 Actor Class로 변환해 보았다.

이제 뇌를 만들었으니 머리를 만들어 주자

 

블루프린트 클래스를 새로 선택하여

상위의 AIController 클래스를 만들어보자

만들면 뭔가 와이파이 같은모양이 생기며

블루프린트 수정을 들어가

하위와 같이 작성해 준다

이는 AI Controller가 무언가 잡고 실행되었을때 발생하는 함수라 한다.(리스너라고 해야하나?)

Run Behavior Tree로 우리의 뇌를 가동이 되었다.

이제 우리의 뇌의 변수를 가져와 수정해 보자 

상위와 같이 검색하면 매번 이상한게 잡힐 때가 있다 하지만 우리는 이미 뇌가 연결되 있기에 get을 사용하여 블랙보드를 가져오도록 한다.

혹은 이런식으로 보이게 하면 변수가 뜨기도 한다.


이제 블렉보드의 값을 세팅해보자 

이렇게 key Name에 정확한 블랙보드의 변수명을 넣어 주어 원하는 작동이 될 것이다.

 

이제 우리의 로봇에 머리를 바꿔줘 보자

 

이제 

이제 움직이는 로직에 새로 넣은 값을 이어주면 뇌와 머리는 완성이다.

 

맵으로 가보자

 

Nav Mesh Bounds Volume 이라는 것이 보인다. 이것은 AI 활동 영역이라고 생각하면 된다.

새로 생성하여 큐브모양의 무언가를 크게만들어보자

 

그리고 P 버튼을 누르면 AI활동 범위를 볼 수 있다.

이렇게 모든 준비는 끝났고 실행해본다.

 

나를 잘 따라오는 것을 볼 수 있을 것이다

 

 

블로그 이미지

Or71nH

,