2014-10-28 78 views
2

我目前正在Unity中製作一款2D 2D側視器(所以所有的精靈都從側面看)。Unity3D中的2D Sidescroller的人工智能

我已經程序化地生成了地形(所以認爲Terraria-esque),並且我希望能夠點擊我的一個貼圖並且有一個貼圖路徑。

然而,精靈需要知道以下幾點:

  1. 無論瓷磚是可訪問的(也就是它不是完全處於地下或一路隨機在天空)
  2. 的最短路徑是什麼到那裏。

我目前正在將我的瓷磚存儲爲短陣列。

瞭解這一點,是我*追求的最佳算法?有沒有人有任何其他良好的信息/提示從哪裏開始尋找這種事情?

我的主要概念上的困難是讓AI知道一個貼圖是否可以訪問。

任何幫助/指針表示讚賞!

+0

Unity內建的navmesh呢? – LearnCocos2D 2014-10-28 10:31:41

+0

@ LearnCocos2D不是Unity的Navmesh在x-z軸上操作,而2D系統是在x-y軸上操作的? – Jestus 2014-10-28 11:59:38

回答

1

A *是找到最短路徑的好方法,但它很重要用於查找是否存在路徑。這是因爲它在搜索整個可訪問空間之前意識到沒有路徑。您可以使用this online tool來使用不同的搜索算法。

您可以用來判斷是否有路徑的快速入侵是每個不同空間的商店ID,並且所有節點都可以互相訪問。通過遍歷所有可訪問節點的遞歸函數很容易分配這些ID。遞歸終止後,再從另一個尚未有任何ID的空間中重新啓動它。希望下面的圖片闡明我的觀點:

11111¤22222¤ 
111¤¤¤222¤¤¤ 
1¤¤¤3¤¤¤¤¤44 
¤¤3333¤¤4444 

在這¤是牆壁和數字空間的ID。當然,您需要將存儲空間從短陣列改爲其他陣列,因爲您需要爲每個節點存儲額外的空間。

+0

嗯。所以你說的是爲空間分配一組ID,然後如果塊有相同的ID,他們可以訪問? – Jestus 2014-10-29 04:05:32

+0

是的。你不能做比這更便宜的測試。我認爲分配ID是O(2 * n)(這很好,你只需要做一次)。因爲您可以遍歷每個節點,並且每次找到沒有ID的節點時,請啓動遞歸ID設置器。組合遞歸函數的所有啓動只會經過每個空間節點一次。 – maZZZu 2014-10-29 05:58:58