回答
的基本思想是建立連接的節點的SKGridGraph
,然後刪除,不能踩踏的節點。 GameplayKit Guide顯示了一個示例(清單6-1生成網格圖)。因此,在您的使用SKTilemapNode
的情況下,圖的寬度和高度由地圖上寬瓦高數決定,如果地圖是32瓦寬和18瓦高,則初始化爲32的寬度和高度的18
你對SKGridGraph有很好的教程嗎?你發佈的指南對我來說不是那麼好 – Lirf
[本教程](http://in8bits.com/gameplaykit-in-swift-a-tower-defence-game-part-3/)是構建與SpriteKit和GameplayKit的塔防遊戲。它使用'SKGridGraph'。 –
圖表這是我是如何實現使用我的瓦片的地圖中的一個的內容的GKGridGraph:
let graph = GKGridGraph(fromGridStartingAt: vector_int2(0,0), width: Int32(tileMap.numberOfColumns), height: Int32(tileMap.numberOfColumns), diagonalsAllowed: false)
var obstacles = [GKGridGraphNode]()
for column in 0..<tileMap.numberOfColumns
{
for row in 0..<tileMap.numberOfRows
{
let position = tileMap.centerOfTile(atColumn: column, row: row)
guard let definition = tileMap.tileDefinition(atColumn: column, row: row) else { continue }
guard let userData = definition.userData else { continue }
guard let isObstacle = userData["isObstacle"] else { continue }
if isObstacle
{
let wallNode = graph.node(atGridPosition: vector_int2(Int32(column),Int32(row)))!
obstacles.append(wallNode)
}
}
}
graph.remove(obstacles)
我不得不設置isObstacle財產在我的障礙瓷磚的用戶數據領域:
這樣你得到的格子狀的圖形,而不osbtacles。
對於任何使用此代碼段的人來說...圖表是爲錯誤的尺寸設置的。它設置爲寬=列和高=列。如果你有一個矩形大小的網格,你必須將它改爲height = rows –
- 1. GameplayKit尋路使用什麼算法?
- 2. 路徑尋找在序言
- 3. A *在Lua尋找路徑
- 4. 在Prolog中尋找路徑
- 5. 幫助尋找路徑
- 6. 尋找路徑計劃
- 7. 尋找關鍵路徑?
- 8. 尋找最短路徑
- 9. 尋找最短路徑
- 10. 用傳送器尋找路徑
- 11. 在JSON代碼中尋找路徑
- 12. 序言:在迷宮中尋找路徑
- 13. 在鄰接矩陣中尋找路徑
- 14. 「找不到路徑的一部分」尋找一個UNC路徑
- 15. 查找與GameplayKit
- 16. 如何使用循環尋找算法找到歐拉路徑?
- 17. IO異常尋找在Android中使用DOM的文件路徑
- 18. 在js中使用多維數組尋找路徑
- 19. 尋找鄰近的瓷磚是否在路徑上
- 20. 尋找在Windows系統上安裝Git的路徑
- 21. 用圖表中的循環尋找路徑(使用每條邊)
- 22. 迷宮與路徑尋找算法
- 23. AnkhSVN錯誤,尋找奇怪的路徑
- 24. 通過煙霧尋找路徑
- 25. 尋找.winmd路徑的靜態庫
- 26. 尋找資源文件夾的路徑?
- 27. 路徑尋找 - 自主漫遊車
- 28. Dijkstra算法尋找最短路徑
- 29. 尋找爬山功能的路徑
- 30. 尋找最近點的路徑向前
這個youtuber在SKEditor中使用了很多廣泛的尋路..這不是教程,但他已經在他的遊戲中成功實現了尋路。 https://www.youtube.com/user/Veeneck/videos。此外,您可能需要觀看蘋果在其網站上發佈的有關WWDC 2016視頻。 – Fluidity