사이즈에 따른 A* 알고리즘

Noke·2025년 7월 8일

Unity TIL

목록 보기
28/31

저번 포스팅에 이어서 A* 알고리즘에서 엔티티의 사이즈를 적용하여 길찾기를 하는 방법에 대해서 알아보자.


🔍 몬스터 사이즈에 따른 A* 알고리즘

A* 알고리즘은 해당 노드가 이동 가능한 지에 대한 bool 값을 가지고 있다. 몬스터 사이즈가 1칸이라면 이 walkable bool 값을 사용하면 된다.

근데, 만약 몬스터 사이즈가 3이라면?
1칸이 아니라 3x3 칸에 대해서 사이즈를 확인해야 할 것이다.

그래서, 나는 아래와 같이 사이즈를 통해 영역에 대한 walkable을 확인하는 메서드를 만들었다.

Vector2Int gridIndex = grid.GetGridIndex(center);
int boundary = entitySize / 2;

for (int x = -boundary; x <= boundary; x++)
{
	for (int y = -boundary; y <= boundary; y++)
    {
    	int gridX = gridIndex.x + x;
        int gridY = gridIndex.y + y;

		if (!grid.IsValidIndex(gridX, gridY)) continue;
        if (!grid.Nodes[gridX, gridY].IsWalkable(targetIndex)) return false;
    }
}

위의 코드에 대해 간단히 설명하자면, IsValidIndex()는 노드 그리드의 범위 안에 있는 지를 체크하고, IsWalkabe()이 실제로 해당 노드의 이동 가능을 체크해준다.

이렇게 몬스터 사이즈에 따라서 이동 가능한 지를 체크할 수 있다.


✨ 마무리

오늘은 A* 알고리즘에서 엔티티의 사이즈에 대한 것을 다루어 보았다.

다음에는 A* 알고리즘에서 목표 지점이 이동 불가능한 곳일 때 길을 찾는 법에 대해서 다루어 보겠다.

profile
유니티 개발자(진)

0개의 댓글