我正在尝试使用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是否可以做到这一点?如果可以的话,我很想继续使用这款引擎。如果有任何问题,请告诉我。
答案 0 :(得分:0)
所以我最终弄清楚了。我发布的链接没有任何问题,我只是没有意识到SpriteKit使用的坐标系是' odd-r'链接中提到的坐标系,而作者使用立方坐标系。我最终做的是遵循作者提供的转换算法,并从立方体转换为“奇数”和“奇数”。坐标。然后,使用该算法查找提供的十六进制范围,我能够实现正确的功能。
总结一下......总是阅读整篇文章,而不仅仅是你感兴趣的内容!
来源:
http://www.redblobgames.com/grids/hexagons/#conversions-offset