我目前正在开发室内寻路。我有多个楼层和不同的房间。如何使用c#wpf在每个楼层的图像中实现a *算法?
答案 0 :(得分:1)
我正在开发的游戏使用空间A *。
空间A *使用运动“成本”来计算两点之间的最佳路线。提及的成本由数组提供。通常是2D数字数组-浮点uint或其他任何值。
因此,通过移动x / y位置的正方形/单元格会花费该2d数组中的数字。 EG成本[2,3]是穿过一个单元格的移动成本,该单元格从投影到您的“房间”上的假想网格的左侧向左穿过3个单元格,从顶部向下向下3个单元格。
如果移动是对角线,则还有一个乘数要考虑,但这将在您采用的任何实现方式中进行。
因此,您需要每层二维费用阵列。
您将需要以某种方式分析您的图片,并为费用较高的单元格计算出合适的尺寸。这应该与地板上重要的地形的最小尺寸相匹配。
然后,您可以将图片转换为成本核算的阵列。您还没有告诉我们足够接近的地方来告诉您具体的操作方法。也许那必须是手动过程。
阻塞的单元格获得最大数量,空单元格获得1。具体取决于您的要求。或者,您可能会有演员跳桌子和椅子等。
您为路径算法指定了起始位置和目标位置(x,y),以及适当的成本数组,它可以算出最便宜的路线。