2017-05-29 56 views
-1

我正在嘗試使用Apple的SpriteKit構建基於十六進制的遊戲。我目前正在試圖弄清楚如何使用SKTileMapNode來獲取給定半徑周圍的「N」,以選定的瓷磚爲中心。我嘗試使用http://www.redblobgames.com/grids/hexagons/#range-coordinate中的算法,但由於SKTileMapNode座標系統在使用Hex平鋪地圖時不透明,未能成功。SpriteKit Neighbouring Hex Tiles

這是我到目前爲止已經試過:

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' 是範圍的半徑。這不按預期工作,我認爲這是因爲我沒有使用網站中提到的座標。

有誰知道這是否可以使用SpriteKit?如果可以的話,我很樂意繼續使用這個引擎。如果有任何問題,請告訴我。

+0

我相信gameplaykit支持六邊形,可能要考慮它 – Knight0fDragon

+0

我甚至不知道什麼是「N」是。 –

+0

也許我誤解了它,但我試圖做這樣的事情:http://www.redblobgames.com/grids/hexagons/#range-coordinate –

回答

0

所以我終於弄清楚了。我發佈的鏈接沒有錯,我只是沒有意識到SpriteKit使用的座標系是鏈接中提到的「odd-r」座標系,而作者使用三維座標系。我最終做的是遵循作者提供的轉換算法,並將其從立方來回轉換爲「odd-r」座標。然後,使用查找提供的十六進制範圍的算法,我能夠實現正確的功能。

總結一下......總是閱讀整篇文章,而不僅僅是你感興趣的內容!

來源:

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