맵 메이커의 입장에서 게임 시작 시 주행로나 구역 별 장애물을 껐다 켰다 하고 싶을 때 어떻게 해야 하나 생각해봤다.
일단 Get All Actors of Class with Tag를 쓰면 각 유형별 장애물들을 블루프린트로 만들면 클래스 화되는 거고 거기에
태그로 이중 필터링을 할 수 있게 되어 나무/범퍼 2종류의 장애물들을 2개씩 1구역과 2구역 (tag로 식별) 에 배치할 것이다.
그리고 bool 변수로 tree와 bump를 각각 두어 branch로 각 bool 값에 따라 종류별로 삭제/유지가 가능하도록 했다.
장애물을 끄는거를 Deactivate, Detach를 생각해봤었는데 얘네들은 액터 안의 컴포넌트에 대해서 작동되는 것이고
액터에 대해서는 Destroy Actor를 써야 하더라. (어쩐지 아무리 해도 안없어지더라)
구역 별 장애물 식별은 tag로 하려고 하는데 일일이 하기 귀찮으니 for each loop 문을 써야한다.
이번에 하면서 for each loop 문 활용법을 더 잘 익힐 수 있었다.

위와 같이 completed 로 노드를 연결하면 한번만 갈긴다.

위와같이 tag를 먹인 나무와 범퍼 장애물에 대해서 completed 에 연결된 채 실행해보면

한짝씩만 없어진다

Loop Body로 연결하면

1구역에 있는 장애물들이 다 없어진 것을 알 수 있다.
이번에는 1구역에 있는 나무만 없어지도록 하겠다. 간단하다. bool tree는 false로, bool bump는 true로 하면 된다.


마지막으로 1구역은 범퍼만 2구역은 나무만 남기도록 하고 이번 글을 마치도록 하겠다.

bool 배열값으로 변형해서 인덱스 별로 값을 다르게 하였다. 구역이 여러개 일 경우 area int array 를 선언해서 area (int to string to tag)로 태그로도 접근하고 켤지 끌지 결정하는 bool array index에도 접근할 수있도록 (area -1 = bool index) 하면
함수를 잘 만들거나 for loop를 잘짜면 더 간결하게 많은 종류의 많은 영역에서의 장애물들을 종류별로 영역별로 껐다 켰다 할 수 있을 것이다. (물론 활성화 여부 bool array는 미리 만들어놓긴 해야한다)

깔끔하게 원하는대로 장애물 컨트롤이 되는 모습
좀 더 대량의 개수에대해서 컨트롤 하는거는 아래와 같다. road array의 element는 tag로 연결시키고 index는 bool array index에 매칭시켰다.



위의 bool array에 따르면 나무는 2번 구역과 3번 구역에만 남아있고 범퍼는 1번구역과 4번 구역에만 남아있을 것이다.
실행한 결과는

제대로 수행됨을 알 수 있다.
| 자동 감시 (구간 감시) 태스크 수행 (2) | 2023.10.23 |
|---|---|
| Unreal 에서 Array 값들 csv로 저장하여 데이터 로깅하기 (1) | 2023.10.07 |
| AI Car Navigation- Easy Car AI 어셋 활용법 (0) | 2023.08.16 |
| UE5 Chaos Vehicle Speed Limit (0) | 2023.08.07 |
| 카메라 고각 방위각 제어 (0) | 2023.08.07 |