我正在尝试使用 Apple 的 GameplayKit、SpriteKit 和 Swift。我正试图通过只能从一侧通过的瓷砖进行寻路。
下图显示了两个问题:
左边是一个简单的解决方案,我了解如何从绿色位置移动到红色位置,因为我需要做的就是wall
从图中删除节点(黑色轮廓方块)并计算路径。
图的右侧让我感到困惑。假设我想要在左侧有墙的瓷砖(如图所示),但我仍然希望能够导航到有墙的瓷砖。我如何告诉图表,只有从顶部、底部或右侧而不是左侧接近时,那些在瓷砖左侧有墙壁的瓷砖才能通过?
针对 Alessandro 的评论,我将解释代码的结构。我正在使用TileMapNode
iOS 10 中新引入的 SpriteKit 来表示瓦片地图。每个图块都是一个SKTileDefinition
. 可以设置自定义属性SKTileDefinition
(例如,我可以设置一个Int
来表示瓷砖的顶部、底部、左侧或右侧是否有墙)。地图的实际表示不如您使用 GameplayKit 找到路径的方式重要。据我所见,GameplayKit 仅允许您从图中删除无法通过的节点,但我想做的是将某些节点标记为可通过但仅从特定方向。
这让我觉得这是一个常见问题(因为许多游戏不必牺牲整个瓷砖来代表内墙),但我不知道如何去做。