问题标签 [hexagonal-tiles]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2301 浏览

android - 在六边形上映射纹理

我正在尝试将纹理映射到六边形,但我无法确定纹理坐标。

六边形的“底”是垂直的。(主要是因为我懒得弄清楚如何旋转该死的东西XD)现在问题是,我不知道如何计算纹理坐标。我已经查看了整个网络,但仍然没有成功。

如果有人可以向我解释如何计算纹理坐标,我将不胜感激,因为除了纹理一个简单的正方形之外,我恐怕无法弄清楚。

注意:它是一个“方形”六边形,所以不是基于圆形。编辑:使用 LG_TRIANGLE_STRIP 绘制六边形。

问题解决了。我现在明白如何计算这些坐标了。以下是对我有用的:

0 投票
1 回答
1089 浏览

grid - 如何将六角网格的顶点位置存储在二维数组中?

我面临这个问题。我想创建一个 hexgrid 并能够以这种方式创建:

我发现制作 hexgrid 的所有方法,首先创建一个 hex 对象,然后在网格上复制它,从而创建重复的顶点位置和连接边缘。我想避免重复顶点位置。我如何声明语句来制作这样的网格?

谢谢

0 投票
2 回答
7866 浏览

python - 在六边形网格上查找相邻邻居

编辑:将示例地图包装在代码块中,以便格式正确。

好的,我正在尝试在六边形网格上编写一个非常简单的 A* 算法。我了解,并且可以做 A* 部分。事实上,我的 A* 适用于方形网格。我无法思考的是寻找带有六边形的邻居。这是 heagonal 网格的布局

等等等等

所以,我需要帮助的是编写一个 Hexagon 类,给定它的十六进制坐标,可以生成邻居列表。它需要能够生成会“脱离”网格的邻居(例如 20x20 网格中的 0000 或 2101),因为这就是我的 A* 跟踪并排放置的多个地图的方式。所以可以使用这个代码片段的东西:

行星 = Hex('0214') print(planet.neighbors()) ['Hex 0213', 'Hex 0215', 'Hex 0115', 'Hex 0315', 'Hex 0116', 'Hex 0316']

0 投票
3 回答
16436 浏览

java - 如何绘制/管理六边形网格?

我读过这篇文章:在 C 中生成/创建六边形网格。但是看起来作者和回答者都已经放弃了它。

√(hexagonSide - hexagonWidth * hexagonWidth): hexagonSide 和 hexagonWidth 是什么?它不会< 0(所以无法计算平方根)。

而且,我可以把一个六边形变成一个矩形吗?我需要创建一个这样的网格:

来源:维基百科

还有一件事,我如何安排我的数组来存储数据,以及获取一个单元格旁边的单元格?

我从来没有教过六边形,所以我对它一无所知,但是我可以很容易地学习新东西,所以如果你能解释或给我一个线索,我可能会自己做。

0 投票
9 回答
26827 浏览

algorithm - 六边形网格,你如何找到一个点在哪个六边形中?

我有一张由六边形的行和列组成的地图

这不是我正在使用的十六进制地图的实际图像,而是使用相同大小和形状的六边形

当用户点击时,我需要能够分辨出鼠标在哪一个上,

每个六边形都由“平铺”类的一个实例表示,但是它不包含任何特定于位置的数据,甚至不包含多边形,因此基本上判断特定六边形在哪里的唯一方法是知道它在二维数组。

之前用过方形格子,比较容易判断选了哪个方形,因为像素也是方形的,

但是我什至不确定从哪里开始使用Hexagons,有没有人有经验?

我不能使用多边形(Java),因为当我开始在屏幕上移动地图并增加它的大小时,我会遇到每帧更新大量多边形的问题。虽然那时我可以检查一个点是否包含在地图的任何图块的多边形中!

目前显示的六边形只是 BufferedImages。

如果您想了解更多信息,请询问,谢谢您的时间:D

0 投票
2 回答
129 浏览

php - 行走十六进制地图时识别和处理 2 条有效路径

我正在编写一个用于六边形地图的成本路径脚本。目前我正处于“学习如何走路”的发展阶段。

一般来说,代码有效。我可以可靠地从 A 到 B。但是,请考虑以下地图:

在此处输入图像描述

序列0406 -> 0405 -> 05050406 -> 0506 -> 0505都是有效的。我想遍历并输出两条路径。

我的代码如下:

我想要的结果是step => hexCoord显示所走路径的数字数组。但是我不确定如何采用上述工作代码来智能分支,并且这样做了,如何最好地塑造输出数据结构......

提前致谢。

0 投票
1 回答
495 浏览

image-processing - 最适合不规则区域的六边形瓷砖

我正在寻找应用程序或库的建议,以计算规则六边形网格与不规则区域或区域组的良好拟合。

最低限度,我希望能够提供图像和最大数量的六边形,并检索旋转/移动/缩放六边形网格以用一种颜色填充每个六边形且误差最小的图像。一个高级功能可能是执行底层图像的变形(在指定的限制内)以实现更好的拟合。我对自己如何做到这一点有一些想法,但这似乎是一个已解决的问题。

感谢您的任何建议。

编辑:我正在考虑的用例是生成相当忠实的真实地理十六进制地图,用于棋盘(或虚拟棋盘)游戏。

0 投票
1 回答
1374 浏览

c# - 十六进制网格 A* 寻路...类型参数错误

我是一名初出茅庐的编程爱好者和游戏设计师,正在学习完成我的学位,因此在编程世界中还是很新的。我已经完成了大量的 JavaScript(实际上是 UnityScript),现在正尝试涉足 C#。我一直在关注 hakimio 的在 Unity 中制作回合制 RPG 的教程,该教程基于使用 A* 寻路的六边形网格。(http://tbswithunity3d.wordpress.com/)

我的问题是,我已经按照他的教程一步一步完成了 A* 寻路脚本和资产,但在 Unity 中遇到了错误:

“错误 CS0308:非泛型类型‘IHasNeighbours’不能与类型参数一起使用”

这是在行上引发错误消息的代码public class Tile: GridObject, IHasNeighbours<Tile>

任何有关如何克服此错误的帮助或见解将不胜感激,过去几天我一直在努力解决这个脚本,试图让它工作,并且无法继续使用教程(和我的项目)错误。

提前谢谢大家!

亚伦:)

0 投票
2 回答
1946 浏览

c# - 优化六角网格上的移动

我正在制作一个基于回合的六角网格游戏。玩家选择单位并在六角网格中移动它们。网格中的每个图块都属于特定的地形类型(例如沙漠、丘陵、山脉等),并且每种单位类型在地形上移动时具有不同的能力(例如,有些可以轻松越过山脉,有些比较困难,有些一点也不)。

每个单位都有一个移动值,每个图块根据其地形类型和单位类型进行一定的移动。例如,在沙漠上移动需要花费 1 辆坦克,在沼泽上需要花费 4 辆,并且无法在所有山脉上移动。飞行单位以 1 为代价移动所有东西。

我遇到的问题是,当一个单位被选中时,我想突出显示它周围的一个区域,显示它可以移动的位置,这意味着计算出通过周围六角形的所有可能路径,每条路径将采取多少移动并点亮基于该信息的瓷砖。

我用递归函数得到了这个,发现计算时间太长了,我把函数移动到一个线程中,这样它就不会阻塞游戏,但线程仍然需要大约 2 秒来计算一个可移动区域单位移动为 8。它的递归超过一百万次,这显然是有问题的。

我想知道是否有人对如何优化这个问题有聪明的想法。

这是我目前正在使用的递归函数(它的 C# 顺便说一句):

在递归结束时,m_lPassableTiles 包含该单元可能到达的所有图块的索引列表,并且它们会发光。

这一切都有效,只是时间太长了。有谁知道更好的方法?

0 投票
1 回答
637 浏览

iphone - Cocos2d. Hexagonal map example

Are there any concrete examples of code using hexagonal maps with cocos2d? Except of drawing them manually, of course. I have found out that Tiled map editor (java version) allows to create these maps. But how to work with such map? I also don't know how to prepare a image for drawing into a hexagonal cell