Поскольку cocos2d ограничивается одним слоем на набора фишек, каждый мозаичный слой на самом деле имеет ссылку Tileset:
CCTMXLayer* floorLayer = [tilemap layerNamed:@"floortiles"];
CCTMXTilesetInfo* tileset = floorLayer.tileset;
uint32_t firstGID = tileset.firstGID;
До сих пор, так хорошо. Но каков максимальный GID? Это можно получить для всех наборов элементов, за исключением последних, довольно легко. Предполагая, что у вас есть два слоя плитки с разными наборами плиток, тогда первый GID второго уровня, вычитаемый одним, является maxGID предыдущего уровня.
Для последнего слоя вы можете предположить, что maxGID - это количество возможных фрагментов в тайнике. Однако это не учитывает плитки, которые не полностью заполнены фактическими фрагментами. Другой вариант - перебрать все слои с помощью этого набора и записать самый высокий GID. Опять же, это неверно, потому что плитка с самым высоким GID на самом деле не может быть размещена на карте.
Единственное определенное решение для этого - добавить фиктивный слой и добавить к нему наивысший GID на 0,0, а затем проверить метку GID этой позиции на фиктивном уровне. Вот как вы точно знаете, что такое самый высокий GID для плитки. Если в процессе нет человеческой ошибки, и вы не забудьте обновить плитку, если вы добавите больше плиток в тайник.
Единственный способ точно выводить эту информацию программно - это сканирование текстуры и исключение всех неиспользуемых плит, путем проверки каждой области плитки и поиска первого полностью прозрачного или одиночного (определенного) цвета. Это будет работать, только если ваш таймер будет заполнен слева направо, сверху вниз, без каких-либо «пустых» фрагментов между ними.
Из всех этих вариантов один я использую в KoboldTouch, чтобы просто предположить, что Tileset с самым высоким наиболее firstGID значение полностью заполнен плитки, то есть lastGID будет:
uint32_t lastGID = firstGID + (texWidth/tileWidth) * (texHeight/tileHeight) - 1;
Этого достаточно для почти во всех случаях.
только плитки, у которых было одно или несколько свойств, добавленных в плитку, будут иметь словарь свойств. Вы хотите перечислить свойства или графики плитки? – LearnCocos2D
Я хочу перечислить GID. Это нормально, если у них нет свойств. Я играю с атрибутами ' 'terrain, но хотел бы только прокручивать через плитки одноразовые свойства и информацию о местности. –
Clay
Некоторые из плиток не имеют свойств, но имеют информацию о местности. – Clay