找到路径上最近的图块

时间:2010-09-28 02:18:31

标签: math path position

我有一个基于图块的游戏,我需要在32px半径范围内找到最近的图块。因此,假设用户位于400, 200,用户点击500, 400。我需要在点击时创建从玩家到鼠标位置的路径或线,并且必须选择32px(或2个图块)内的路径下面的最近的图块。地图在16px平铺。

可以使用函数调用来查看图块是否位于给定图块位置Map.at(x,y)

我只是不知道用来解决这个问题的数学。

alt text

块块在16px内,红色在32px内。灰色块是要销毁的区块,蓝线是玩家和鼠标之间的不可见路径。

2 个答案:

答案 0 :(得分:1)

如果你按照图块坐标工作,问题会变成一个线条绘制问题,从用户所在的标题到单击鼠标的图块。线条绘制算法将按顺序生成所有图块这两块瓷砖之间的直线路径。只需选择Map.at(x,y)满足您要求的第一个并退出行抽屉。

存在许多线条绘制算法。两个简单的是DDABresenham's。两者都以正确的顺序生成离散的“像素”(问题中的图块)。如果可以在您的应用程序中使用浮点运算,则DDA是一个简单的选择。 Bresenham只使用整数数学。

Generated tiles on path

答案 1 :(得分:0)

有很多游戏,不一定是直线,而是搜索最短的路径。如果您正在前往那里,那么您可能需要查看the A* algorithm