我最近在 Lua 中实现了 A* 寻路,但由于对成本中的 H 使用曼哈顿方法,我遇到了不好的路径。
我想知道是否有其他计算节点成本的方法。这是我目前正在使用的:
function CalcG(A,B)
if type(A) == "table" then
A = A.Pos
end
if type(B) == "table" then
B = B.Pos
end
return (A-B).Magnitude
end
function CalcH(A,B)
if type(A) == "table" then
A = A.Pos
end
if type(B) == "table" then
B = B.Pos
end
return math.abs(A.X - B.X) + math.abs(A.Z - B.Z)
end
function GetCost(A,B,C)
return CalcG(A,B) + CalcH(B,C)
end
并计算成本:
GetCost(Start,CurrentNode,End)
如果有人可以指导我采用更好的启发式方法,我将不胜感激。