arpg游戏中我们一般都用 1 代表可行走点 0 不可行走点。组成一个二维数组。byte[][] mapConfig。这样就可以使用 坐标系来求解一些问题。比如 这里所说的 如何知道两点之间是否存在障碍物。我的思路从起点开始 x轴 或 Y轴 加 0.5。循环 判断当前点是否是阻挡点。
假如 有此方法判断 改坐标点是否是 阻挡
checkNoBlockPosition(int map,int xPosCell,int yPosCell)
游戏地图中,一般世界坐标 x = 格子 / 2;
假如:PrecisePosition 作为坐标对象:
public class PrecisePosition {
private float x;
private float y;
private int cellX;
private int cellY;
}
/**
* 判断两节点之间是否存在障碍物 已测试
* true :阻挡点
*/
public static boolean hasBarrier(int mapId, PrecisePosition start, PrecisePosition end) {
if (start.getCellX() == end.getCellX() && start.getCellY() == end.getCellY())
return false;
if (!checkNoBlockPosition(selfMLife, mapId, end.getCellX(), end.getCellY()))
return true;
float distX = Math.abs(end.getX() - start.getX());
float distY = Math.abs(end.getY(