SpriteKit相邻的十六进制平铺

时间:2017-05-29 22:36:52

标签: ios swift sprite-kit hex tiles

我正在尝试使用Apple的SpriteKit构建基于十六进制的游戏。我目前正试图弄清楚如何使用SKTileMapNode获取给定半径的周围六边形'N',以选定的图块为中心。我尝试使用http://www.redblobgames.com/grids/hexagons/#range-coordinate中的算法,但由于使用Hex平铺地图时SKTileMapNode坐标系的不透明性,但未成功。

这是我到目前为止所尝试的:

for dx -N ... N max = max(-N, -dx-N) min = min(N, -dx+N) for dy max ... min // place sprite at (selectedTile.col + dx, selectedTile.row + dy)

其中'N'是范围的半径。这没有按预期工作,我认为这是因为我没有使用网站中提到的 dz 坐标。

有谁知道使用SpriteKit是否可以做到这一点?如果可以的话,我很想继续使用这款引擎。如果有任何问题,请告诉我。

1 个答案:

答案 0 :(得分:0)

所以我最终弄清楚了。我发布的链接没有任何问题,我只是没有意识到SpriteKit使用的坐标系是' odd-r'链接中提到的坐标系,而作者使用立方坐标系。我最终做的是遵循作者提供的转换算法,并从立方体转换为“奇数”和“奇数”。坐标。然后,使用该算法查找提供的十六进制范围,我能够实现正确的功能。

总结一下......总是阅读整篇文章,而不仅仅是你感兴趣的内容!

来源:

http://www.redblobgames.com/grids/hexagons/#conversions-offset