C# XNA六边形贴图平铺

C# XNA六边形贴图平铺,c#,xna,C#,Xna,好了,伙计们, 我在这方面遇到了很多麻烦。在XNA中,我根本无法找到在六边形贴图中实现瓷砖拾取的方法。在问这个问题之前我已经查过了,所有的答案都涉及复杂的算法和图表,我弱小的头脑根本无法理解。所以我想问你们的问题是:如果我想的话,我如何能够在瓷砖上悬停并选择它们 如果你需要任何关于我的程序到目前为止看起来如何的参考资料,只要看看这个链接,它实际上是一样的,除了我有一个较小的地图 谢谢 这是我存储过但从未使用过的代码,它用于一条边正在查找的十六进制网格,因此通过一些小的调整,它可以在您的示例中工

好了,伙计们, 我在这方面遇到了很多麻烦。在XNA中,我根本无法找到在六边形贴图中实现瓷砖拾取的方法。在问这个问题之前我已经查过了,所有的答案都涉及复杂的算法和图表,我弱小的头脑根本无法理解。所以我想问你们的问题是:如果我想的话,我如何能够在瓷砖上悬停并选择它们

如果你需要任何关于我的程序到目前为止看起来如何的参考资料,只要看看这个链接,它实际上是一样的,除了我有一个较小的地图


谢谢

这是我存储过但从未使用过的代码,它用于一条边正在查找的十六进制网格,因此通过一些小的调整,它可以在您的示例中工作。这不是我的代码,不知道是谁写的

Hexagon[][] hexagons = new Hexagon[100][100];
double hexagonHeight = 30;
double hexagonWidth = 40;
double halfWidth = hexagonWidth / 2;


// Find rough coordinates of Hexagon at mousepoint
private Hexagon getSelectedHexagon(MouseEvent mouse)
    {
        // These will represent which box the mouse is in, not which hexagon!
        int row = (int) (mouse.y / hexagonHeight);
        int column;

        boolean rowIsOdd = row % 2 != 0;

        // Is the row an even number?
        if (rowIsOdd) // No: Calculate normally
            column = (int) (mouse.x / hexagonWidth);
        else // Yes: Offset mouse.x to match the offset of the row
            column = (int) ((mouse.x + halfWidth) / hexagonWidth);

        // column is more complex because it has to
        // take into account that every other row
        // is offset by half the width of a hexagon

        return hexagons[row][column];
    }
编辑:我刚找到作者

抱歉,但由于我对XNA和C在一般情况下都很陌生,这段代码将走向何方,为了使其正常工作,我必须更改哪些变量名/值?