2014-12-22 2 views
0

저는 처음부터 솔직하게 말하고 싶습니다. 나는 직선 경로 찾기를 원하지 않습니다.Voxel 기반 게임을위한 고급 3D 길 찾기

Minecraft와 마찬가지로 플레이어는 떨어지거나 튀어 올라 블록과 충돌 할 수 있습니다. 세계가 평면 ​​인 2D/Overhead 뷰에서 네비게이션 메쉬를 만들거나 볼록한 모서리에 "웨이 포인트"를 두는 것만으로도 어느 것이 연결되었는지를 알아낼 수 있습니다 (node1과 node2 플레이어가 그 사이를 걸을 수 있도록) 다음 기본 시작 => 노드 ... => ... 노드 => 끝을 수행합니다.

니스 예 : 플레이어는 점프 할 수 있으며 비행 할 수 http://martindevans.me/assets/navmesh.png

때문에 내가 전에했던 것처럼, 난 그냥 3 차원 볼록 모서리를 할 수 없습니다. (또한, 그것은 빨아 줄 계단의 각 구석에 하나를 만들 것입니다)

그래도 문제가 있습니다. 플레이어는 뛰어 오르고 떨어질 수 있으며 교량이나 그 위를 지나칠 수 있습니다. 플레이어가 점프 (거리)를 할 수 있는지 계산하기 때문에 이것은 매우 복잡합니다. 다른 예는 플레이어가 계곡을 내려 가서 다른 쪽 (또는 다른 쪽이 절벽 인 경우)으로 올 수 있거나 가을이 너무 심할 경우 (사망 할 수도 있음)를 포함합니다.

제 질문은 다음과 같습니다. 어떻게 고급 인공 지능을 허용 할 수 있습니까? 그것은 같은 목적지에 도착하기 위해 다리 위로 뛰어 들거나 아래로 갈 수 있습니다. 계곡을 돌아 다니기보다 골짜기를 걸어 다니기로 결정했을 수도 있습니다. 어떻게하면이 모든 것을 성취 할 수 있을까요? 올바른 방향으로 가고 있습니까? 아니면 시도해야 할 또 다른 방법이 있습니까? 나는 이것이 많은 노력이 될 수 있다는 것을 이해하지만, 나는 그저 그라운드를 달릴 수만 있다면 시간을 할애 할 의지가있다.

답변

3

* 2D 또는 3D인지 상관하지 않습니다. 3D의 모든 인접 점 목록을 제공하면 완료됩니다. 분명히 더 많은 메모리를 사용하지만, 몇 초에 여러 번 재 계산 된 미친 3D 미로를 만들지 않는다고 가정하면 정상이어야합니다.

+0

문제는 중력입니다. 나는 선수가 그들이 원하는만큼 올라 가게 할 수 없으며, 나는 그들이 단지 협곡을 지나칠 수는 없다. 또한, 그들은 특정 높이 등의 절벽을 걸어 갈 수 있어야합니다. A *로 어떻게이 일을 할 수 있습니까? – DemiPixel

+1

바로 위 (점프) 또는 레벨 2 이하 (안전 낙하) 인 경우에만 이웃을 반환합니다. 그것은 분명히 위쪽 케이스에 대한 천장이없고, 같은 레벨에 인접한 셀에 바닥이 없을 때 이웃과 같은 경우입니다. 셀을 뛰어 넘을 수 있기를 원한다면 값 비싼 이웃으로 돌려 보내서 할 수도 있습니다 (A *는 가중치를 가질 수 있습니다). – Blindy

+0

내가 이것을하지 않은 유일한 이유는 대각선 운동이 필요했기 때문입니다. 내가 맨 위에 말했듯이, 나는 한 방향으로, 다른 하나는 1의 기울기만을 가지기를 원하지 않는다. 그래서 나는 노드를 원했고, 플레이어는 A에서 B로 걸어 갈 수 있었고, 그 다음 직면하는 각도를 계산하고 앞으로 걸어 라. 내가 말할 수있는 것으로부터, A *는 내가 그렇게 할 수 없도록했다. – DemiPixel