ASTAR 길찾기 알고리즘

2016. 7. 4. 14:56기술/기타

반응형

 


ASTAR 길찾기 알고리즘
다음은 ASTAR 길찾기 알고리즘을 구현하기 위한 개인적인 노트 입니다.Update) 2020-01-07 현재 유니티 2019.3.0 버전에 유니티 타일 시스템을 이용하여 구현해 두었습니다.

다음 알고리즘을 사용하여어떠한 언어로든 어떠한 엔진에서든 길찾기를 구현할 수 있습니다. (C/C++, JAVA, C#, DIRECTX, MFC, COCOS2D-X, UNITY3D등)
listOpenNode : 벽이 아닌 길listCloseNode : 지나 왔던 길listBestNode : 최단 거리 길

FindPath( 시작 타일, 끝 타일 ){1. 예외 처리 

 

      • 시작 타일이 끝 타일이면 함수 종료, 끝 타일이 벽 타일이면 함수 종료
      • 준비 : 모든 리스트 클리어, 시작 노드 하나 생성, 다음 노드(길) 하나 선언

 

 

2. while (찾을 때까지){

      • 좌상, 상, 우상, 우, 우하, 하, 좌하, 좌를 검사하여 벽이 아니면 노드를 생성하고 listOpen에 추가
      • listOpen을 목적지비용(GoalCost)으로 정렬하여 가장 짧은 거리의 노드를 찾음. listClose에 담는다.
      • 시작 노드에 대입하고 listOpen에서 지워서 계속 길을 찾는다.

3. 시작 노드가 끝 노드이면 (도착했으면 listBestNode를 만든다)}}
CreateNode( 부모 노드, 길 노드 ){1. 이미 있는 노드 검사

      • listOpen 에 있으면 null 반환, listClose 에 있으면 null 반환
2. 새 노드 생성
      • 두 노드간의 거리와 목적지 노드와의 거리를 계산
      • 거리를 설정하고 반환

}

 

 

동영상에 대한 간략한 설명

 

TK2DTOOLKIT의 tk2dTileMap을 사용하였습니다.

기본적으로 타일을 그리는 기능이 포함되어 있습니다.

필요시 기획자나 디자이너분께 작업 방법에 대해 친절하게 설명해 드릴 수 있습니다.

이 툴에서 제공하는 타일맵의 최대 크기인

128 x 128 = 16,384개의 노드를 생성하고 길찾기를 합니다.

 

 

 

코드는 주석처리까지 깔끔하게 정리하여

본인 또는 타인이 알아보기 쉽게 작성합니다.

 

 

 

 

기능을 구성요소(Component) 단위로 나누어서

유니티 기본 설계 개념인 게임 오브젝트 컴포넌트 시스템을 적용 하였습니다.

 

 

길찾기를 하여 캐릭터가 맵을 움직여 다니는 영상입니다.캐릭터 애니메이션 처리, 간단한 파티클 이팩트캐릭터 애니메이션이 자연스럽도록 Pivot 포인트를 발아래에 지정해 주었습니다.벽이라는 맵 오브젝트와 YSorting 처리를 하였습니다.

 

반응형

'기술 > 기타' 카테고리의 다른 글

모바일 해킹과 보안  (0) 2020.01.03
스키마와 딥링크  (0) 2017.06.21
젠킨스(Jenkins) 자동 빌드  (0) 2017.02.21
Visual Studio 2017 외 유용한 정보  (0) 2016.09.08
UI 작업 FLOW  (0) 2016.07.11