2016-07-15 75 views
1

我與蘋果的GameplayKit,SpriteKit和斯威夫特試驗網格的路徑。我試圖通過僅從一側通過的瓦片來尋找我的頭部。查找與GameplayKit

下圖顯示了兩個問題:

enter image description here

左邊是一個簡單的解決辦法,我知道如何從綠色位置移動到紅色的位置,因爲所有我需要做的是去除wall節點(黑色方框)並計算路徑。

圖的右邊我百思不得其解。假設我想要在左手側有牆的瓷磚(如圖所示),但我仍然希望能夠導航到牆上的瓷磚。我該如何去告訴圖表:如果從頂部,底部或右側接近而不是左側,那麼瓦片左側的瓦片只能通過?

針對亞歷山德羅的評論,我將有關代碼的結構解釋。我使用引入到iOS 10中的SpriteKit的新TileMapNode來表示瓦片貼圖。每個瓷磚是SKTileDefinition。自定義屬性可以在SKTileDefinition上設置(例如,我可以設置Int來表示瓷磚頂部,底部,左側或右側是否有牆)。使用GameplayKit查找地圖的實際表示方式並不重要。據我所知,GameplayKit只允許你從圖形中刪除無法通過的節點,但我想要做的事情是將某些節點標記爲可通過,但只能從特定方向標記。

這在我看來是一個常見的問題(因爲很多遊戲都不必犧牲整個瓷磚代表的內壁),但我沒有不懂怎樣去做。

+0

什麼是瓷磚?它是SKSpriteNode嗎?你想要什麼尺寸?您是否使用TileMap的三維零件庫?你如何移動你的角色?什麼是牆?在你的問題之後,我有比你更多的問題,所以請張貼一些代碼,一些細節,這個問題似乎是一個電視測驗。 –

回答

1

你有幾個選項:

1)減少你的網格大小。薄壁的存在表明你的網格尺寸可能會更小(在最小的障礙物的順序)

2)使用不同的圖形類型,並放棄網格。 GKObstacleGraph或GKMeshGraph非常適合有多個任意多邊形障礙的遊戲世界。

+0

您好,我想創建一個在Apple文檔中聲明的在任意圖中查找路徑的實現。 https://developer.apple.com/library/content/documentation/General/Conceptual/GameplayKit_Guide/Pathfinding.html你有一個示例代碼? –