2016-07-26 2 views
0

특정 색상으로 표시된 구절이있는지도가 있으며 사람들은이 구석에서만 걸을 수 있으므로 다른 색상은 장애물입니다. 거기에 그런 종류의지도에서 그래프를 만들 수있는 도구/라이브러리/알고리즘이 있습니까?PNG지도에서 그래프 만들기

+0

이와 같은 게임을 만들 때는 [모델 /보기/컨트롤러 패턴] (https://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller)을 사용해야합니다. . 이 모델에는지도를 만들고 그래프를 만드는 데 필요한 정보가 들어 있습니다. –

답변

1

라이브러리 또는 도구로이를 빌드 할 필요가 없습니다. 현재 진행중인 작업은 새 구현을 정당화 할만큼 충분히 간단하고 독특합니다.

아래에서는이 작업을 수행하기 위해 구축 할 구성 요소, 특히 좁은 책임을 강조합니다.

그래프 [T]는

그래프 노드들의 집합의 노드 쌍 사이의 이진 관계를 나타낸다. T은 해당 노드와 연관된 페이로드를 나타내며 사용 사례에서는 이미지의 픽셀 좌표입니다. 우리는 그래프가 방향성인지 또는 비순환 적인지 또는 그와 같은 것에 대한 가정을하지 않습니다.

노드 [T]

그래프 단일 노드. 여기에는 유형이 T 인 일반적인 페이로드와 GetNeighboringNodes이라는 메서드가 있습니다.

PassageGraphBuilder

이 클래스는 Image 밖으로 Graph<PixelCoordinates>를 만들기위한 책임이 있습니다. Color이 주어진 Image 내의 한절을 나타내는 구성을 포함하며 방향성 (위/아래/왼쪽/오른쪽 또는 대각선도 가능)으로 연결성을 허용하는 구성이 포함되어 있습니다.

Image의 각 픽셀에 대해 Node<PixelCoordinates>을 만들어이 작업을 수행합니다. 그런 다음 Image에있는 모든 인접 픽셀의 색상을 검사하여 해당 노드 간 관계를 만듭니다.

WorldToGraphMap

이 구성 요소는 픽셀 좌표 간의 매핑 세상의 책임이있다. 이것은 당신의 세계의 규모가 그것을 운전하는 데 사용 된 데이터와 독립적이되도록합니다. 그것은 GetWorldCoordinatesForNodeCenter(Node<PixelCoordinates>)GetNodeForWorldCoordinates(WorldCoordinates)과 같은 방법을 가지고 있습니다. 입력으로 새로운 원하는 위치를 (세계 좌표에서) 선수에 대한, 아마도 컨트롤러에 의해 구동

  • 의견 : 다음

    당신이 할 수있는 ... 마지막으로

    , 다음을 수행 할 수 있습니다 입력,

  • 을 호출하여 그래프에서 새 위치가 일치하는 노드를 확인하십시오.
  • 플레이어의 현재 노드를 확인하여 두 노드가 인접 해 있는지 확인하십시오 ors :
  • 새 노드가 이전 노드의 이웃 인 경우 이동을 허용하십시오.
  • 그렇지 않으면 허용하지 않습니다.

물론 실제 navmesh를 구성하는 데 더 많은 어려움이 있지만,이 사용 사례로 이동해야합니다.