【发布时间】:2016-01-27 02:25:45
【问题描述】:
我正在尝试编写一些内容,它将采用 X 和 Y 坐标以及表示所选演员具有的可用移动点的值。然后它应该输出一个可到达位置的列表,以便我可以在演员选择移动位置时突出显示这些图块。
我设法使用了我的寻路库 (https://github.com/xaguzman/pathfinding) 中的一个函数,该函数将一个图块的相邻图块作为网格单元列表提供给我。它还可以检查我的瓷砖地图,看看瓷砖是否可以行走。
我无法真正理解的是如何设置它,使其运行次数与移动点一样多。
List<GridCell> neighbours;
NavigationTiledMapLayer navLayer;
public void getMovementPossibilities(int tileX, int tileY) {
GridCell cell1;
GridCell cell2;
cell1 = navLayer.getCell(tileX, tileY);
GridFinderOptions opt = new GridFinderOptions();
opt.allowDiagonal = true;
opt.dontCrossCorners = false;
neighbours = navLayer.getNeighbors(cell1, opt);
for (int i = 0; i < neighbours.size(); i++) {
int nX = neighbours.get(i).getX();
int nY = neighbours.get(i).getY();
cell2 = navLayer.getCell(nX, nY);
neighbours.addAll(navLayer.getNeighbors(cell2, opt));
}
}
【问题讨论】:
-
您想研究 dijkstra 算法。您只需从起始节点/图块/单元格继续扩展,直到到达一定距离内的所有图块。
标签: java libgdx path-finding tiled