• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

A* 관련 질문

21.02.02 00:37 작성 조회수 113

0

neighbor 경로 비용 계산 부분에서 gCost는 왜 사용되지 않는 이유가 있는건가요?

hCost를 제곱을 하는 이유가 뭔가요?

               int gCost = 0; 

               int hCost = 10 * ((dest.Y - neighbor.Y) * (dest.Y - neighbor.Y) + (dest.X - neighbor.X) * (dest.X - neighbor.X));

아래 부분을

int value = 0;

if (openList.TryGetValue(neighbor, out value) == false)

                  value = Int32.MaxValue;

이렇게 바꿔도 상관 없나요?

int value = Int32.MaxValue;

openList.TryGetValue(neighbor, out value);

답변 1

답변을 작성해보세요.

1

1.
A*에서 평가식은 본인 마음대로 정의하면 됩니다.
보통 휴리스틱 h는 이동 목적지까지의 거리를,
g 쪽에서는 원래 위치에서 현 경로 오기까지의 cost를 넣지만
이동 경로를 보고 적당히 조절하면 됩니다.
제곱하는 이유는 거리 계산식에서 거리 제곱을 사용하는데
distance^2 = deltaX^2 + deltaY^2 이기 때문입니다.

2.
네 상관 없습니다.