안선생의 개발 블로그

[UE5 AI] AI Behavior Tree - Task, 셀렉터(Selector),시퀀스(Sequence) 본문

언리얼/AI

[UE5 AI] AI Behavior Tree - Task, 셀렉터(Selector),시퀀스(Sequence)

안선생 2024. 3. 17. 21:19

 태스크(Task) 노드에 대한 레퍼런스 페이지입니다. 태스크는 AI를 이동하거나 블랙보드 값을 조정하는 등 각종 '작업'을 수행하는 노드입니다. 태스크에는 데코레이터(Decorators) 또는 서비스(Services)를 어태치할 수 있습니다.

 

새태스크를 한번 만들어봅시다.

 

Event Receive Execute AI를 호출해줍니다 

 

이름에서도 알 수 있는데 이함수는 실행되면 호출되는 함수입니다.

 

노드를 아래와같이 해봅니다.

위에 보면 숫자가있는데 실행 순서

 

순서는 왼쪽에서 오른쪽, 그다음 위에서 아래이다.

 

아래있어도 왼쪽에 있으면 아래있는게 먼저 실행 즉 왼쪽부터 실행되므로 잘 보자

 

이제 테스크를 가보면 아까 만든 테스크가 있음

 

 

이 테스크는 프린트 Hello를 출력함 예상되는 실행은 Hello실행하고 5초 기다린다음에 다시 루트로 가서 반복 될 것 같다.

 

실행

하지만 실행해보면 넘어가질 않은걸 알 수 있음

 

그 이유는 TestTask가 실행이 완료된지를 알 수 없어서 그럼 

 

즉 Task는 실행이 완료되면 True를 반환하고 넘어간다.

 

Selector

왼쪽에서 오른쪽 순서로 분기를 실행하며, 보통은 복수의 서브트리 중 하나를 선택하는 데 사용됩니다. 셀렉터는 성공적으로 실행할 수 있는 서브트리를 찾으면 이동을 멈춥니다. 예를 들어 AI가 플레이어를 성공적으로 추격하고 있다면, 분기의 실행이 완료될 때까지 해당 분기에 머물다가 셀렉터의 부모 컴포짓으로 이동하여 결정 흐름을 계속하게 됩니다.

 

 

다시 테스크로 돌아가서 그럼 성공했다고 알려줘야함

Finsih Execute를 실행하고 Success 체크 해주면 이 Task가 실행이 완료됐음을 알려줌 그러면 다음 노드로 넘어간다.

 

실행결과

뭔가 이상하다. Wait가 실행이 안되는거 같음

보니깐 Selector는 성공하면 다음으로 안넘어가고 성공할때까지 찾는 컴포짓임 즉 TestTask가 성공해서 계속 저것만 실행되는거

 

시퀀스(Sequence) 왼쪽에서 오른쪽 순서로 분기를 실행하며, 보통은 복수의 자손을 순서대로 실행하는 데 사용됩니다. 시퀀스는 셀렉터와 달리 실패하는 노드에 도달할 때까지 자손을 계속해서 실행합니다. 예를 들어 플레이어를 향해 움직여서 플레이어가 일정 거리 안에 들어왔는지 확인한 다음 회전하여 공격하게 하는 시퀀스가 있다고 합시다. 플레이어가 일정 거리 안에 들어왔는지 확인하는 부분이 실패하면, 회전 후 공격 액션은 실행되지 않습니다.

 

 

시퀀스는 반대 성공하면 다음 노드로 넘어감 즉 실패할때까지 넘어간다.

 

시퀀스로 바꾸고 실행

 

정상적으로 TestTask실행후 성공하면 Wait 실행 반복이 이루어지고 있음

 

 

 

여기서 중요한거는 

Task  = 하나의 실행(행동) Ex) 위치 이동, 딜레이, 애니메이션 재생

Selector = 성공할때까지 계속 실행  자손이 하나라도 성공하면 그 Selector는 성공으로 간주됨 즉 하나라도 성공하면 나머지 자손들은 실행X 성공하면 부모 Selector로 리턴

예를 들어 AI가 플레이어를 성공적으로 추격하고 있다면, 분기의 실행이 완료될 때까지 해당 분기에 머물다가 셀렉터의 부모 컴포짓으로 이동하여 결정 흐름을 계속하게 됩니다.

Sequence = 실패할때까지 계속 실행 모든 자손이 성공해야 Sequence도 성공으로 간주됨 즉 하나라도 실패하면 나머지 자식들 실행X 실패하면 부모 Sequence로 리턴

예를 들어 플레이어를 향해 움직여서 플레이어가 일정 거리 안에 들어왔는지 확인한 다음 회전하여 공격하게 하는 시퀀스가 있다고 합시다. 플레이어가 일정 거리 안에 들어왔는지 확인하는 부분이 실패하면, 회전 후 공격 액션은 실행되지 않습니다.

 

 

'언리얼 > AI' 카테고리의 다른 글

[UE5 AI] Behavior Tree - Decorator  (0) 2024.03.27
[UE5 AI] Behavior Tree - Service  (0) 2024.03.21
[UE5 AI] Simple Parallel  (0) 2024.03.21
[UE5 AI] AI - BlackBoard  (0) 2024.03.20
[UE5 AI] AI Setup  (0) 2024.03.17