我正在寻找在基于网格的RTS城市建设游戏中放置道路的寻路,因为我已经使用A *算法进行车辆的寻路,我认为将它用于此任务也很方便。由于我们的道路只是简单的方块,我无法使用原始算法,因为道路就像图片一样: Roadplacement
原始算法检查它旁边的每个网格方格如下:
for (int x = -1; x <= 1; x++)
{
for (int y = -1; y <= 1; y++)
{
if (x == 0 && y == 0))
{ continue; }
//the rest of the code goes here
我认为避免那些对角线放置的最简单方法是阻止使用的选项,每个网格方块都不会检查它周围的8个方格而只是4个加号:
for (int x = -1; x <= 1; x++)
{
for (int y = -1; y <= 1; y++)
{
if ((x == 0 && y == 0)|| (x != 0 && y != 0))
{ continue; }
//the rest of the code goes here
唯一的问题是找到路径的时间会急剧增加,我的意思是在很长的距离内它会从6毫秒跳到约70毫秒。 有没有人有我可以使用的解决方案,或建议另一种算法更适合这类问题?
提前致谢!
答案 0 :(得分:0)
您可以使用XOR优化此行:
if ((x == 0 && y == 0)|| (x != 0 && y != 0))
做这样的事情:
if (!(x ^ y))
我不确定这会加快多少,但值得一试!