타일 맵 편집기에서 작업 중이며 인접한 타일을 기준으로 타일을 자동으로 선택해야합니다. 예를 들어, 도로 타일을 다른 도로 타일 옆에 배치 할 때 두 도로가 연속 도로를 형성하도록 방향을 정해야합니다. 주변에 다른 도로가있는 경우 모서리 또는 교차로 타일을 사용해야 할 수도 있습니다.
누구 든지이 작업을 수행하는 데 알고리즘을 추천 할 수 있습니까? 게임은 8 방향 사각형 타일 맵을 사용합니다.
타일 맵 편집기에서 작업 중이며 인접한 타일을 기준으로 타일을 자동으로 선택해야합니다. 예를 들어, 도로 타일을 다른 도로 타일 옆에 배치 할 때 두 도로가 연속 도로를 형성하도록 방향을 정해야합니다. 주변에 다른 도로가있는 경우 모서리 또는 교차로 타일을 사용해야 할 수도 있습니다.
누구 든지이 작업을 수행하는 데 알고리즘을 추천 할 수 있습니까? 게임은 8 방향 사각형 타일 맵을 사용합니다.
답변:
어쩌면 이것이 일반적으로 수행되는 방법 일 수 있습니다. 도로 타일을 가능한 모든 방향으로 나타내는 다른 타일 목록이 있습니다. 왼쪽에서 오른쪽, 네 모서리 모두, 위에서 아래로, 무엇이든. 이제 모든 타일을 각각 바이트로 인덱싱합니다. 각 방향에 하나씩 8 비트. 이것은 해시 맵 또는 파일 이름 일 수 있지만 ...이 작업을 수행하려고합니다.
그래서 당신은 이것을 가지고 있습니다 :
위 타일의 바이트 코드는 00000000 입니다. 그런 다음 왼쪽에서 오른쪽으로 (또는 오른쪽에서 왼쪽으로) 타일은 다음과 같습니다.
해당 타일의 바이트 코드는 10001000 또는 136입니다. 다른 예로 3 가지 교차점을 살펴 보겠습니다.
해당 타일의 바이트 코드는 10101000 입니다.
내가가는 곳을 보셨을 것입니다. 연결을 나타내는 바이트에서 비트 위치를 설정합니다. 이것은 내가 전에 본 큰 if / else 체인을 시도하는 것보다 훨씬 낫습니다. 타일을 배치하려고 할 때 타일을 검사하고 그에 따라 바이트를 만듭니다. 도로가있는 타일 (또는 연결하려는 대상)은 1로 설정하고 연결하지 않은 타일은 0으로 설정하십시오. 완료되면 필요한 정확한 타일의 바이트 코드를 갖게됩니다.
에셋을 만들 때 올바른 바이트 코드를 회전하고 할당하여 많은 자산을 재사용 할 수 있습니다.
편집 : 이미지가 덜 깔끔하도록 업데이트되었습니다. 예, 이전보다 낫습니다.
이 편리한 페이지를보고 자세한 정보를 확인하십시오. 현재 수행중인 작업의 거의 모든 측면과 몇 가지 잠재적 최적화에 대해 자세히 설명되어 있습니다. http://www.angryfishstudios.com / 2011 / 04 / adventures-in-bitmasking /
tldr은 인접한 각 셀을 쿼리하고 조합을 비트 필드 / 바이트로 저장 한 다음 0 ~ 255의 숫자를 0 ~ 47의 값으로 변환하는 맵을 통해 전달합니다.이 값은 고유 이미지에 해당합니다.