最近、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)
誰かがより良いヒューリスティックな方法に向けて私を導くことができれば、私はそれを感謝します.