我目前正在使用古斯塔沃·佛朗哥( Gustavo )在2006年编写的这个路径查找算法在GitHub上找到的 (特别是PathFinderFast.cs)。它速度太快了,效果也很棒。唯一的问题是,当路径在两个障碍物之间斜行时,我需要不允许对角线移动(见图)。

在这种情况下,这条路应该被认为是被阻碍的,但是沿障碍物的正常对角线移动,或者在开阔的区域内仍然允许。
有一个字段"mDiagonals“在启用时,将"mDirection”检查从四路更改为八路。我试过玩弄这些东西,但没有成功。
更糟的是,我最终会写我自己的A*,但是当前的实现是如此疯狂的优化和易于使用,我不得不这样做是很遗憾的。如果有人能告诉我如何修改现有的代码,我将永远感激。
发布于 2022-09-01 11:14:15
看起来,如果在以下几行之后:
if (mGrid[mNewLocationX, mNewLocationY] == 0)
continue;你再加上
if (i > 3 && mGrid[mLocationX, mNewLocationY] == 0 && mGrid[mNewLocationX, mLocationY] == 0)
continue;应该是你所需要的。它只检查新行和旧列中的单元格,然后检查旧行和新列中的单元格,这是在对角线上阻塞的两个单元格,如果它们都被阻塞,则不计算单元格。
https://stackoverflow.com/questions/73565391
复制相似问题