본문 바로가기

블루프린팅/10. AI적

[10.AI적업그레이드] 더 많은 적을 스폰하기

적을 파괴하게 했으니 적을 생기게도 해야한다.

 

BP_EnemySpawner 블루프린트 만들기

우리는 레벨의 임의의 위치에 적을 스폰하는 블루프린트를 만들 것이다.

 

 

1. 콘텐트드로워를 열고  Add+를 눌러 블루프린트클래스>Actor를 클릭후 BP_EnemySpawner로 이름을 변경하고 더블클릭해서 에디터를 연다.

2. 변수+를 클릭해 다음과 같이 만든다. Detail InstanceEditable을 체크해준다. 아래 그림을 보면 타입옆에 눈을 떠 있다. InstanceEditable이라는 아이콘이다.

  • SpawnTime : 스폰 사이의 시간, Float , 디폴트값 10.0
  • MaxEnemies : 적의 최대 스폰 수, Integer, 디폴트값 5

3. 내 블루프린트 마크로+를 클릭한후 이름을 SpawnEnemy로 변경한다.

4.  디테일에서 Inputs>In>Exec, Outputs>Out>Exec로 설정한다.

5. 빈곳에 우클릭후 Spawn AIFrom Class를 추가하고 앞뒤로 연결해준다

6. PawnClass는 BP_EnemyCharacter, BehaviorTree는 BT_EnemyBehavior를 풀다운메뉴를 열어 선택한다.

7. Location입력핀을 끌어 GetRandomPoint In NavigableRadius를 추가하라고 했는데 없다 . 대 GetRandomeReachablePointRadius를 넣어주었다 Radius를 10000으로 하고 이 노드는 탐색 메시를 기반으로 임의의 위치를 반환한다.

8. Origin입력핀을 끌어 GetActorLocation을 추가한다.

9. 현재 마크로에디터에서 이벤트그래프창으로 이동해서 BeginPlay이벤트의 흰색핀을 끌어 SetTimerbyEvent노드를 추가한다. Looping파라미터를 체크한다.

10. Time파리미터를 끌어 Get Spawn Time노드를 추가한다. Event입력핀을 끌어 CustomEvent를 추가하고 이름을 TryToSpawnEnemy로 변경한다. 위치는 아래같이 한다.

11 TryToSpawnEnemy출력핀을 끌어 Get All Actors Of Class를 추가하고 Actor Class를 BP_EnemyCharacter로 변경한다.

12. Get All Actors Of Class 흰색출력핀을 끌어 Branch를 추가하고 True핀에서 와이어를 끌어 SpawnEnemy 매크로 노드를 추가한다.

13.  Get All Actors Of Class Out Actors블루핀을 끌어 Length노드를 추가한다 .Length노드의 Return Value는 레벨의 적의 수 이다.

14. LENGTH출력핀에서 <노드를 추가하고 출력핀을 Branch의 Condition입력핀에 연결한다.

15 <노드의 하단핀에서 와이어를 끌어 Get Max Enemies노드를 추가한다.

16. 컴파일 저장한다. 에디터를 닫고 BP_EnemySpawner를 끌어 레벨의 출발지점 근처에 놓고 인스턴스를 만든다. 플레이해보면 적의 스폰이 발생한다. 하지만 배회(Patrol)지점이 지정되지 않아 움직이지 않는다. 게임을 정지하면 에러메세지도 뜨는데 일단 무시하자.