【问题标题】:Finding a path on a grid with GameplayKit使用 GameplayKit 在网格上查找路径
【发布时间】:2016-07-15 22:37:32
【问题描述】:

我正在尝试使用 Apple 的 GameplayKit、SpriteKit 和 Swift。我正试图通过只能从一侧通过的瓷砖进行寻路。

下图显示了两个问题:

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

图表的右侧让我感到困惑。假设我想要在左侧有墙的瓷砖(如图所示),但我仍然希望能够导航到有墙的瓷砖。我如何告诉图表那些在瓷砖左侧有墙壁的瓷砖只有从顶部、底部或右侧而不是左侧才能通过?

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

这让我觉得这是一个常见问题(因为很多游戏不必牺牲整个图块来代表内墙),但我一点也不知道该怎么做。

【问题讨论】:

  • 瓷砖是什么?它是 SKSpriteNode 吗?你希望它有什么维度?您是否为 TileMap 使用 3d 零件库?你怎么能移动你的角色?什么是墙?在你的问题之后,我的问题比你多,所以请发布一些代码,一些细节,这个问题似乎是一个电视测验。

标签: swift sprite-kit game-physics path-finding gameplay-kit


【解决方案1】:

你有几个选择:

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

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

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2016-12-23
  • 1970-01-01
  • 1970-01-01
  • 2011-01-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-22
相关资源
最近更新 更多