【问题标题】:Get tile player is standing on (player doesn't move according to (isometric) TiledMap LibGDX获取瓦片玩家正在站立(玩家不根据(等距)TiledMap LibGDX移动
【发布时间】:2017-10-11 15:06:27
【问题描述】:

我正在开发一款类似于 WC3 中流行的“术士”自定义地图的游戏。对于我使用平铺地图的游戏,但是玩家不会(也不应该)使用 LibGDX 平铺地图 api 移动。相反,玩家通过向量移动。我正在尝试通过获取玩家的世界坐标并为该确切的图块找到相应的行和列来注册玩家站在哪个图块上。

我似乎可以使用以下代码正确处理正交平铺地图:

  private boolean checkIfOnLava()
    {
        for (Entity e : world.getEntities(PLAYER)) {

            float height = currentLayer.getTileHeight() * currentLayer.getHeight();
            float width = currentLayer.getTileWidth() * currentLayer.getWidth();

            float playerX = e.get(Position.class).getX();
            float playerY = e.get(Position.class).getY();

            int tileRow = (int) (playerX / currentLayer.getTileWidth());
            int tileCol = (int) Math.abs((playerY - (height / 2)) / currentLayer.getTileHeight());
            System.out.println("Row: " + tileRow);
            System.out.println("Col: " + tileCol);
            if (currentLayer.getCell(tileRow, tileCol).getTile().getId() == 3) {
                System.out.println("Walking on lava");
                return true;
            }
        }
        System.out.println("walking on ground");

        return false;
    }

但是,在使用等轴测图时,要找到图块的相应列和行似乎有点棘手。我想我必须对 Rombus' 使用一些数学而不是平方,但我不确定这是否正确,如果正确,使用哪种数学。

【问题讨论】:

标签: java libgdx tile isometric tiled


【解决方案1】:

我找到了解决问题的方法,使用以下方法,它现在可以根据其位置(以像素为单位)识别玩家所在的瓷砖的行和列。

private boolean OnLava()
{
    for (Entity e : world.getEntities(PLAYER)) {

        float playerX = e.get(Position.class).getX();
        float playerY = e.get(Position.class).getY();

        int tileRow = (int) (playerX / currentLayer.getTileWidth() - (playerY / currentLayer.getTileHeight()));
        int tileCol = (int) Math.abs((tileRow * currentLayer.getTileHeight() / 2 + playerY) / (currentLayer.getTileHeight() / 2));
        if (currentLayer.getCell(tileRow, tileCol).getTile().getId() == 3) {
            return true;
        }
    }
    return false;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多