【发布时间】:2011-12-04 01:11:11
【问题描述】:
我有一张由六边形行和列组成的地图
这不是我使用的十六进制地图的实际图像,而是使用相同大小和形状的六边形
当用户点击时,我需要能够分辨出鼠标在哪一个,
每个六边形都由一个“Tile”类的实例表示,但是它不包含任何特定于位置的数据,甚至不包含多边形,所以基本上判断特定六边形在哪里的唯一方法就是知道它是在二维数组中的位置。
我之前用过方形格子,比较容易判断选择了哪个方形,因为像素也是方形的,
// Example where each square is 10 by 10 pixels:
private void getClickedSquare(MouseEvent me)
{
int mouseX = me.getX(); // e.g. 25
int mouseY = me.getY(); // e.g. 70
int squareX = (int)(mouseX / 10); // in this case 2
int squareY = (int)(mouseY / 10); // in this case 7
// Then to access the tile I would do
map.squares[squareX][squareY].whatever();
}
但我什至不知道从哪里开始使用 Hexagons,有人有经验吗?
我不能使用多边形 (Java),因为当我开始在屏幕上移动地图并增加它的大小时,我会遇到每帧更新大量多边形的问题。虽然那时我可以检查一个点是否包含在地图的任何图块的多边形中!
目前显示的六边形只是 BufferedImages。
如果您想了解更多信息,请询问, 感谢您的时间:D
【问题讨论】:
-
@Pi 任何发现这个问题的人都应该看看那个链接!
-
很棒的资源,那个链接!还有来自 CatlikeCoding 的这个惊人的教程,我发现它更容易理解。 catlikecoding.com/unity/tutorials/hex-map/part-1
标签: algorithm point hexagonal-tiles