큐
- 리스트의 한 종류
- 선입선출(FIFO)
- 선언 : Queue<Node> queue = new Queue<Node>();
- 추가 : queue.Enqueue();
- 제거 : queue.Dequeue();
- 첫번째아이템 엿보기 : queue.Peek();
너비 우선 탐색
우선 Awake문에서 GridManager의 Grid를 찾고 존재하면 멤버 딕셔너리 변수인 grid를 GridManager의 Grid로 하고나서 인스펙터에서 정한 시작지와 목적지 노드를 할당해준다.
이후에 Start문에서 너비우선탐색 함수를 부른다.
frontier 큐와 reached 딕셔너리에 한 번 시작 노드와 시작 key value를 추가하고
탐험 노드를 현재 노드로 하고 탐험 했는지 체크한 후 목적지를 찾을 때까지 이웃을 찾는 작업을 반복해준다.
이후에 현재 노드 좌표에서 방향 좌표를 더해 더해 이웃을 찾아주고
이웃마다 루프를 돌려 이미 도달하지 않고 걸을 수 있는 노드면 도달했다는 것과 탐험할 것이라는 정보를 추가해준다.
ObjectPool의 PathFinder에서 Destination Coordinates 좌표를 정해주면 그 목적지에 갈 때까지 너비 우선 탐색을 실행하게 된다.
'유데미 강의 > C#과 Unity로 3D 게임 개발하기 : 레엄 러쉬' 카테고리의 다른 글
노드 블로킹 (0) | 2022.09.12 |
---|---|
왔던 경로 다시 찾기 (0) | 2022.09.12 |
이웃 경로 찾기 (0) | 2022.09.08 |
디버깅2 (0) | 2022.09.08 |
딕셔너리 (0) | 2022.09.08 |