This translation is community contributed and may not be up to date. We only maintain the English version of the documentation. Read this manual in English
Тайловая карта — это компонент, который позволяет собирать, или наносить, тайлы из Tile Source на большой сетчатой области. Тайловые карты обычно используются для создания окружения игровых уровней. Также можно использовать формы столкновений из источника тайлов в картах для обнаружения столкновений и физических симуляций (пример).
Прежде чем создавать тайловую карту, необходимо создать Tile Source. Обращайтесь к руководству по источникам тайлов, чтобы узнать, как их создавать.
Чтобы создать новую тайловую карту:
Новая тайловая карта автоматически откроется в соответствующем редакторе.
Чтобы нанести тайлы на тайловую карту:
Выберите тайл для использования его в качестве кисти (нажмите Space чтобы отобразить палитру тайлов)
Нанесите тайлы выбранной кистью. Чтобы стереть тайл, либо выберите пустой тайл и используйте его в качестве кисти, либо выберите ластик (Edit ▸ Select Eraser).
Тайлы можно выбирать непосредственно из слоя и использовать выбранное в качестве кисти. Удерживая Shift, кликните по тайлу, чтобы выбрать его в качестве текущей кисти. Удерживая Shift, можно также кликнуть с протяжкой, чтобы выбрать блок плиток для использования в качестве более крупной кисти. Также можно вырезать плитки, удерживая Shift+Ctrl, или стереть их, удерживая Shift+Alt.
Для поворота кисти по часовой стрелке используйте Z. Для отражения по горизонтали — X, а для отражения по вертикали — Y.
Чтобы добавить тайловую карту в игру:
Тайловыми картами можно управлять во время выполнения с помощью ряда различных функций и свойств (обращайтесь к документации по API).
Содержимое тайловой карты можно считывать и записывать динамически во время работы игры. Для этого используются функции tilemap.get_tile()
и tilemap.set_tile()
:
local tile = tilemap.get_tile("/level#map", "ground", x, y)
if tile == 2 then
-- Заменить тайл с травой (2) на тайл с опасной ямой (number 4).
tilemap.set_tile("/level#map", "ground", x, y, 4)
end
Помимо свойств Id, Position, Rotation и Scale существуют следующие специфичные для компонента свойства:
Свойство Blend Mode определяет, как графика компонента должна смешиваться с графикой, расположенной позади. Ниже представлены доступные режимы наложения и способы их вычисления:
src.a * src.rgb + (1 - src.a) * dst.rgb
src.rgb + dst.rgb
src.rgb * dst.rgb
src.rgb - dst.rgb * dst.rgb
Тайловая карта имеет ряд различных свойств, которыми можно манипулировать с помощью go.get()
и go.set()
:
tile_source
hash
). Это свойство можно изменять с помощью свойства источника тайлов и go.set()
. За примером обращайтесь к справочнику по API.material
hash
). Это свойство можно изменять с помощью свойства материала и go.set()
. За примером обращайтесь к справочнику по API.The default tilemap material has the following constants that can be changed using go.set() or go.animate() (refer to the Material manual for more details). Examples:
go.set("#tilemap", "tint", vmath.vector4(1,0,0,1))
go.animate("#tilemap", "tint", go.PLAYBACK_LOOP_PINGPONG, vmath.vector4(1,0,0,1), go.EASING_LINEAR, 2)
tint
vector4
). Для представления оттенка с компонентами x, y, z и w, соответствующими красному, зеленому, синему и альфа оттенкам, используется тип vector4.В файле game.project имеются несколько настроек проекта, относящихся к тайловым картам.
Существуют внешние редакторы карт и уровней, которые могут экспортировать данные непосредственно в тайловые карты Defold:
Tiled — это известный и широко используемый редактор карт для ортогональных, изометрических и гексагональных карт. Он поддерживает множество функций и может экспортировать напрямую в Defold. Подробнее о том, как экспортировать данные тайлмапа и дополнительную мета-информацию, читайте в блоге пользователя Defold “goeshard”.
Tilesetter позволяет автоматически создавать полноценные наборы тайлов из простых базовых плиток и содержит редактор карт, который может экспортировать данные непосредственно в Defold.
Did you spot an error or do you have a suggestion? Please let us know on GitHub!
GITHUB