A* Pathfinding Project Pro / Astar 길찾기 AI

 

# 유니티 에셋스토어 링크

https://prf.hn/click/camref:1101l7zGS/destination:https://assetstore.unity.com/packages/tools/behavior-ai/a-pathfinding-project-pro-87744

 

A* Pathfinding Project Pro | 행동 AI | Unity Asset Store

Get the A* Pathfinding Project Pro package from Aron Granberg and speed up your game development process. Find this & other 행동 AI options on the Unity Asset Store.

assetstore.unity.com

 

 

#. 어떤 에셋인가요?

앞서 설명한 Behavior Designer와 함께 유명한 에셋 중 하나이다.

유니티 에셋은 찜하기 갯수가 많이 사용되는 지표로 본다면 Behavior Desginer는 9k, 이 에셋은 7.8k 정도.

주요 기능은 다음과 같다.
- 2D모드, 3D 모드 지원
- 사각 그리드 (4방향, 8방향이동 선택) / 육각그리드, ISO 그리드 등 지원

- NavMesh를 사용하는 것도 가능하다.
- 실시간으로 탐색 경로를 표시해주는 디버깅 컴포넌트 제공

- 콜리전을 탐색하여 이동 가능한 그리드 경로를 자동으로 리맵핑

- 국소회피 (RVO) 기능 제공

 

#. 개인 평가

프로그래머사이에서는 BehaviorTree와 함께 직접 구현하면 되지 않냐는 논란이 많은 에셋.

하지만 몇가지만 짚어봐도 아래와 같은 기능들은 직접구현하려면 상당한 노력이 들어갈 것이다.

 

이 기능만을 전문으로 담당할 프로그래머 인력이 있는게 아니라면 소스코드도 제공하니 커스텀해서 사용하는 편이 낫지 않을까 싶다.

 

 

비주얼 디버깅 제공

- 에디터에서 이동이 가능한 그리드, 현재 이동중인 경로, 에이전트 등을 시각적 디버깅을 제공한다.

 

멀티 쓰레드 연산 가능

- 쓰레드 갯수를 지정해서 연산도 가능하다.

 

그래프 캐시

- 콜리전을 탐색해서 갈 수 있는 경로를 체크하다보니 맵이 변하지 않는다면 매번 그리드를 연산하는 것이 비효율적이다. 때문에 미리 캐싱해서 사용하는 기능도 제공한다.

 

퍼포먼스를 위한 연산 최적화 옵션 제공

- 컴파일러 심볼을 사용하여 특정 연산을 제외하거나 포함하도록 한다.

 

 

#. 사용법

역시 문서화가 잘 되어있으니 문서와 영상을 참고할 것.
https://arongranberg.com/astar/docs/

간단하게 설명하자면,
씬에 있는 빈 오브젝트에 Pathfinder 컴포넌트를 붙여준다.

이는 그리드를 의미하는 매니저로서 사용된다.

설정에서 width 와 Depth 만 50, 50 으로 고쳐줬다.

 

 

바닥으로 사용할 큐브를 두어개 배치한다. 콜리전으로 감지하니 콜리전이 켜져있어야한다.

 

 

에이전트로 사용할 큐브를 하나 만들고 AIPath 스크립트를 붙여준다.

AIPath 스크립트에서 MaxSpeed 는 5로 수정해준다.

 

테스트 용으로 다음과 같은 스크립트를 붙여준다.

public class AstarProejctTest : MonoBehaviour
{
    [SerializeField] Transform target;

    void Start()
    {
        var aiPath = GetComponent<AIPath>();
        aiPath.destination = target.position;
    }
}

 

별도 큐브를 먼곳에 위치시키고 Target에 할당한 뒤 실행해보면 

다음과 같이 경로를 따라 이동한다.

 


경로가 너무 딱딱하게 느껴진다면

Pathfinder에서는 Erosion iterations 를 0 -> 2로, 에이전트에서는 SimpleSmooth 컴포넌트를 붙여보자.

 

다음과 같이 경계면에 오프셋이 추가되며 부드러운 경로를 얻을 수 있다.

 

#. 마치며..

가격이 비싼만큼 기능들과 컴포넌트가 상당히 많다.

아직 가볍게 써보고 있는 중이라 큰 문제는 보이지 않는데 소스코드가 그대로 노출되는 방식이니 필요하면 수정해서 사용하면 될 듯하다.

 

 

댓글

Designed by JB FACTORY