인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

BBAKK님의 프로필 이미지
BBAKK

작성한 질문수

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part9: MMO 컨텐츠 구현 (DB연동 + 대형 구조 + 라이브 준비)

A* 개선

A* 관련 질문

작성

·

198

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

Rookiss님의 프로필 이미지
Rookiss
지식공유자

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

2.
네 상관 없습니다.

BBAKK님의 프로필 이미지
BBAKK

작성한 질문수

질문하기