【发布时间】: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