게임개발/Unreal 블루프린트

[Unreal_블루프린트]#32_AI Patrolling Path using Spline

Hardii2 2022. 10. 11. 20:42

 

[Unreal_블루프린트]#32_AI Patrolling Path using Spline

Unreal 블루프린트 개발 중 "AI" 구현을 진행합니다.

"블루 프린트" 활용에 대한 내용입니다.

 


 

Summary
  1. Spline 컴포넌트 : 임의의 Actor에 추가하고 World에 AI가 Patrolling을 수행할 Path를 그려줍니다.
  2. Patrol Component : 해당 Actor를 멤버로 갖는 컴포넌트들 별도로 생성하고 세부 사항을 구현합니다.
  3. BTTask_Patrol : AI의 Patrolling을 BT에서 실행합니다.

 

BP_PatrollingPath 

1. BP_Patrolling Path

 

2. Spline

  • Wolrd에 배치된 흰색 선이 Spline입니다.
  • Spline 특성에 "Closed Loop"을 통해 Spline을 닫힌 구조로 생성할 수 있습니다.

 

Patrol Component

1. Patrol Component

  1. Patrol Path 변수 : 앞서 생성한 BP_PatrolPath를 참조하는 변수
  2. Index 변수
  3. Reverse : 추후에 AI가 Patrolling할 방향입니다.
  4. Acceptance Radius

 

2. Patrol Component::Is Valid Path()

 

3. Patrol Component::Get Index Location()

  • Spline은 여러 포인트를 잇는 선으로 만들어지며, 각각의 포인들은 내장 배열에 저장되어있습니다.
  • 현재 Index 변수가 가리키는 Spline 포인트의 위치를 반환합니다. 

 

4. Patrol Component::Update Next Index()

  • Spline Point 배열의 현재 Index를 반환하는 함수입니다.
  • 배열을 순회하는 순서를 정 방향으로 할 것인지, 역 방향으로 할 것인지 여부 결정
  • 단순 알고리즘이기 때문에 자세한 설명은 생략합니다.

 

4. Patrol Component::Get Spline Count()

  • Spline이 갖는 총 포인트 개수를 반환합니다.

 

5. BP_AI

  • BP_AI가 소유할 Component로서, 앞서 구현한 Patrol Component를 추가해줍니다.

 

BTTask_Patrol

1. Received Execution AI

  1. BP_AI의 Patrol Component를 가져옵니다. 
  2. AI Move To : Patrol Component::Get Index Location()을 통해 가져온 위치로 AI를 이동시킵니다.

 

결과 화면

1. Behavior Tree

 

2. 결과 화면