【问题标题】:Hexagon tiles not lining up properly, gaps inbetween六边形瓷砖没有正确排列,中间有间隙
【发布时间】:2016-01-19 08:32:21
【问题描述】:

我正在尝试用六边形图块绘制地图。但是,我正在努力让瓷砖正确排列,所以它们之间没有空间。 一张是我通常使用的图块,一张放大了另一张图块,以确保它不仅仅是抗锯齿对我的玩弄。

这是负责获取每个图块的像素坐标的代码。显然每个奇数行的偏移量都有一些错误计算,但简单地添加或减去一个像素只会增加间隙。

private static final float HEX_WIDTH = 97; // 139 for colored tiles
private static final float HEX_HEIGHT = (float) (Math.sqrt(3)/2 * HEX_WIDTH);

public Vector2 getHexCoordinates(Hexagon hex) {
    float x = (float) HEX_WIDTH * hex.getGridX() * 3 / 4;
    float y = (float) HEX_HEIGHT * (hex.getGridX() / 2 + hex.getGridY());
    y = (hex.getGridX() % 2 == 0) ? y : y + HEX_HEIGHT / 2;
    return new Vector2(x, y);
}

另外here's the tiles我正在使用以防有人想知道。

【问题讨论】:

  • 我注意到 y 不会不断增加(随着 gridx/y 增加)。这是一个非常小的偏差,但根据您的地板/四舍五入的方式,它可能会产生间隙。
  • 没有地板/四舍五入。十六进制精灵无需任何进一步的数学运算即可获得坐标,并且绘图功能也使用浮点数。此外,间隙的宽度不会以任何明显的方式增加。从我所看到的检查坐标来看,它们也经常出现。
  • 您是否尝试四舍五入到小数点后 1 位或 2 位?这至少应该给你恒定的间距。
  • 实际上,四舍五入会产生不一致的间距,因为一旦达到阈值,就会有更多的像素添加/减去偏移量。

标签: java libgdx hexagonal-tiles


【解决方案1】:

您是否尝试过简单地将 HEX_WIDTH 减 1?

private static final float HEX_WIDTH = 96;

您的身高显然没问题,因为您没有水平间隙。

【讨论】:

【解决方案2】:

将单个 Sprite 缩放 1.01f 减小了间隙的大小,足以认为该问题已解决。

【讨论】:

    猜你喜欢
    • 2011-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多