Swift 使用GameplayKit在网格上查找路径

Swift 使用GameplayKit在网格上查找路径,swift,sprite-kit,game-physics,path-finding,gameplay-kit,Swift,Sprite Kit,Game Physics,Path Finding,Gameplay Kit,我正在试用苹果的GameplayKit、SpriteKit和Swift。我正试图通过只能从一侧通过的瓷砖来寻找路径 下图显示了两个问题: 左边是一个简单的解决方案,我知道如何从绿色位置移动到红色位置,因为我所需要做的就是从图中删除墙节点(黑色轮廓方块)并计算路径 图表的右边让我感到困惑。假设我希望瓷砖的左手边有一面墙(如图所示),但我仍然希望能够导航到有墙的瓷砖。我该如何告诉图表,只有从顶部、底部或右侧而不是左侧接近时,瓷砖左侧有墙的瓷砖才可以通行 针对亚历山德罗的评论,我将解释代码的结构。我

我正在试用苹果的GameplayKit、SpriteKit和Swift。我正试图通过只能从一侧通过的瓷砖来寻找路径

下图显示了两个问题:

左边是一个简单的解决方案,我知道如何从绿色位置移动到红色位置,因为我所需要做的就是从图中删除
节点(黑色轮廓方块)并计算路径

图表的右边让我感到困惑。假设我希望瓷砖的左手边有一面墙(如图所示),但我仍然希望能够导航到有墙的瓷砖。我该如何告诉图表,只有从顶部、底部或右侧而不是左侧接近时,瓷砖左侧有墙的瓷砖才可以通行

针对亚历山德罗的评论,我将解释代码的结构。我正在使用iOS 10中引入到SpriteKit的新
TileMapNode
来表示平铺贴图。每个磁贴都是一个
SKTileDefinition
。可以在
SKTileDefinition
上设置自定义属性(例如,我可以设置
Int
来表示瓷砖顶部、底部、左侧或右侧是否有墙)。地图的实际表示方式不如使用GameplayKit查找路径重要。就我所见,GameplayKit只允许您从图形中删除无法通过的节点,但我想做的是将一些节点标记为可以通过,但只能从特定方向删除


这是一个常见的问题(因为很多游戏不需要牺牲一整块瓷砖来代表一堵内墙),但我一点也不知道该怎么做。

你有几个选择:

1) 减小网格大小。薄壁的存在表明你的网格尺寸可能更小(按最小障碍物的顺序)


2) 使用不同的图形类型并完全放弃网格。GKObstacleGraph或GKMeshGraph非常适合于有许多任意多边形障碍物的游戏世界。

什么是平铺?这是斯普林泰诺吗?你希望它有多大尺寸?是否使用TileMap的三维零件库?你如何移动你的角色?什么是墙?在你的问题之后,我有比你更多的问题,所以请发布一些代码,一些细节,这个问题似乎是一个电视问答。您好,我想创建一个在任意图形中查找路径的实现,如苹果文档中所述。你有这方面的示例代码吗?