游戏X,Y坐标轴中,判断两节点之间是否存在障碍物。

本文探讨了在ARPG游戏中如何判断两个节点之间是否存在障碍物,通过使用1和0表示可行走和不可行走的格子,利用坐标轴加0.5的方法循环检查阻挡点。同时提到误差处理确保直线路径周围无阻挡,并提出Bresenham直线算法也可实现类似效果。
摘要由CSDN通过智能技术生成

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(
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值