TileMap
Застаріло: Use multiple TileMapLayer nodes instead. To convert a TileMap to a set of TileMapLayer nodes, open the TileMap bottom panel with the node selected, click the toolbox icon in the top-right corner and choose 'Extract TileMap layers as individual TileMapLayer nodes'.
Успадковує: Node2D < CanvasItem < Node < Object
Node для 2D кахельних карт.
Опис
Вузол для 2D карт на основі плиток. Карти плиток використовують TileSet, який містить список плиток, які використовуються для створення карт на основі сітки. TileMap може мати кілька шарів, які розміщують плитки одна над одною.
З міркувань продуктивності всі оновлення TileMap групуються в кінці кадру. Примітно, що це означає, що фрагменти сцени з TileSetScenesCollectionSource можуть бути ініціалізовані після батьківського елемента. Це додається до черги лише всередині дерева сцени.
Щоб примусово виконати оновлення раніше, викличте update_internals().
Примітка: З міркувань продуктивності та сумісності координати, серіалізовані за допомогою TileMap, обмежені 16-бітними цілими числами зі знаком, тобто діапазон координат X і Y становить від -32768 до 32767. Під час збереження даних плитки за межами цього діапазону обгортаються.
Посібники
Властивості
|
||
|
||
|
||
|
||
Методи
void |
_tile_data_runtime_update(layer: int, coords: Vector2i, tile_data: TileData) virtual |
_use_tile_data_runtime_update(layer: int, coords: Vector2i) virtual |
|
void |
|
void |
clear() |
void |
clear_layer(layer: int) |
void |
erase_cell(layer: int, coords: Vector2i) |
void |
|
void |
force_update(layer: int = -1) |
get_cell_alternative_tile(layer: int, coords: Vector2i, use_proxies: bool = false) const |
|
get_cell_atlas_coords(layer: int, coords: Vector2i, use_proxies: bool = false) const |
|
get_cell_source_id(layer: int, coords: Vector2i, use_proxies: bool = false) const |
|
get_cell_tile_data(layer: int, coords: Vector2i, use_proxies: bool = false) const |
|
get_coords_for_body_rid(body: RID) |
|
get_layer_for_body_rid(body: RID) |
|
get_layer_modulate(layer: int) const |
|
get_layer_name(layer: int) const |
|
get_layer_navigation_map(layer: int) const |
|
get_layer_y_sort_origin(layer: int) const |
|
get_layer_z_index(layer: int) const |
|
get_layers_count() const |
|
get_navigation_map(layer: int) const |
|
get_neighbor_cell(coords: Vector2i, neighbor: CellNeighbor) const |
|
get_pattern(layer: int, coords_array: Array[Vector2i]) |
|
get_surrounding_cells(coords: Vector2i) |
|
get_used_cells(layer: int) const |
|
get_used_cells_by_id(layer: int, source_id: int = -1, atlas_coords: Vector2i = Vector2i(-1, -1), alternative_tile: int = -1) const |
|
get_used_rect() const |
|
is_cell_flipped_h(layer: int, coords: Vector2i, use_proxies: bool = false) const |
|
is_cell_flipped_v(layer: int, coords: Vector2i, use_proxies: bool = false) const |
|
is_cell_transposed(layer: int, coords: Vector2i, use_proxies: bool = false) const |
|
is_layer_enabled(layer: int) const |
|
is_layer_navigation_enabled(layer: int) const |
|
is_layer_y_sort_enabled(layer: int) const |
|
local_to_map(local_position: Vector2) const |
|
map_pattern(position_in_tilemap: Vector2i, coords_in_pattern: Vector2i, pattern: TileMapPattern) |
|
map_to_local(map_position: Vector2i) const |
|
void |
move_layer(layer: int, to_position: int) |
void |
notify_runtime_tile_data_update(layer: int = -1) |
void |
remove_layer(layer: int) |
void |
set_cell(layer: int, coords: Vector2i, source_id: int = -1, atlas_coords: Vector2i = Vector2i(-1, -1), alternative_tile: int = 0) |
void |
set_cells_terrain_connect(layer: int, cells: Array[Vector2i], terrain_set: int, terrain: int, ignore_empty_terrains: bool = true) |
void |
set_cells_terrain_path(layer: int, path: Array[Vector2i], terrain_set: int, terrain: int, ignore_empty_terrains: bool = true) |
void |
set_layer_enabled(layer: int, enabled: bool) |
void |
set_layer_modulate(layer: int, modulate: Color) |
void |
set_layer_name(layer: int, name: String) |
void |
set_layer_navigation_enabled(layer: int, enabled: bool) |
void |
set_layer_navigation_map(layer: int, map: RID) |
void |
set_layer_y_sort_enabled(layer: int, y_sort_enabled: bool) |
void |
set_layer_y_sort_origin(layer: int, y_sort_origin: int) |
void |
set_layer_z_index(layer: int, z_index: int) |
void |
set_navigation_map(layer: int, map: RID) |
void |
set_pattern(layer: int, position: Vector2i, pattern: TileMapPattern) |
void |
Сигнали
changed() 🔗
Увімкніть, коли TileSet цього TileMap зміни.
Переліки
enum VisibilityMode: 🔗
VisibilityMode VISIBILITY_MODE_DEFAULT = 0
Використовуйте налаштування для визначення видимості.
VisibilityMode VISIBILITY_MODE_FORCE_HIDE = 2
Завжди приховує.
VisibilityMode VISIBILITY_MODE_FORCE_SHOW = 1
Завжди показати.
Описи властивостей
bool collision_animatable = false 🔗
Якщо увімкнено, TileMap побачить свої зіткнення, що синхронізуються на фізичну клітку і змінить її тип зіткнення від статичної до кінематики. Для створення платформи TileMap на основі рухомої платформи.
Примітка: Включення collision_animatable може мати невеликий удар продуктивності, тільки це зробити, якщо TileMap переміщається і має з'єднання плитки.
VisibilityMode collision_visibility_mode = 0 🔗
void set_collision_visibility_mode(value: VisibilityMode)
VisibilityMode get_collision_visibility_mode()
Показати або сховати форми зіткнення TileMap. Якщо встановити до VISIBILITY_MODE_DEFAULT, це залежить від параметрів зіткнення шоу.
void set_navigation_visibility_mode(value: VisibilityMode)
VisibilityMode get_navigation_visibility_mode()
Показати або приховати навігаційні сітки TileMap. Якщо встановити на VISIBILITY_MODE_DEFAULT, це залежить від параметрів навігаційної дебюги.
int rendering_quadrant_size = 16 🔗
Розмір квадросу TileMap. Квадрорант – група плиток, яка складається з одного полотна, для цілей оптимізації. rendering_quadrant_size визначає довжину квадратної сторони, в координаційній системі мапи, що утворює квадрофон. Таким чином, за замовчуванням група квадранта розміром разом 16 * 16 = 256 плитка.
Розмір квадросу не наноситься на Y-сортовані шари, так як плитка згрупована позицією Y замість цього випадку.
Примітка: Квадроанти створюються відповідно до координаційної системи карти, квадрорантської "швидкої форми" не може виглядати як квадрат у локальній координатній системі TileMap.
TileSet використовується цим TileMap. Тут зберігаються текстури, зіткнення та додаткова поведінка всіх доступних плиток.
Описи методів
void _tile_data_runtime_update(layer: int, coords: Vector2i, tile_data: TileData) virtual 🔗
Викликається з об'єктом TileData, який буде використано внутрішньо TileMap, що дозволяє його модифікацію під час виконання.
Цей метод викликається лише тоді, коли реалізовано метод use_tile_data_runtime_update(), і повертає true для заданих параметрів тайла coords та layer.
Попередження: Підресурси об'єкта tile_data такі ж, як і в TileSet. Їх модифікація може вплинути на весь TileSet. Натомість обов'язково дублюйте ці ресурси.
Примітка: Якщо властивості об'єкта tile_data змінюються з часом, використовуйте метод notify_runtime_tile_data_update(), щоб повідомити TileMap про необхідність оновлення.
bool _use_tile_data_runtime_update(layer: int, coords: Vector2i) virtual 🔗
Повинно повертати true, якщо плитка з координатами coords на шарі layer потребує оновлення під час виконання.
Попередження: Переконайтеся, що ця функція повертає true лише за потреби. Будь-яка плитка, оброблена під час виконання без потреби в цьому, призведе до значного зниження продуктивності.
Примітка: Якщо результат цієї функції змінився, використовуйте notify_runtime_tile_data_update(), щоб повідомити TileMap про необхідність оновлення.
void add_layer(to_position: int) 🔗
Додає шар у заданій позиції to_position у масиві. Якщо to_position від'ємне, позиція рахується з кінця, при цьому -1 додає шар у кінець масиву.
void clear() 🔗
Очищає всі клітини.
void clear_layer(layer: int) 🔗
Очищає всі клітини на заданому шарі.
Якщо layer є негативним, шари виходять з останнього.
void erase_cell(layer: int, coords: Vector2i) 🔗
Стирає комірку на шарі layer за координатами coords.
Якщо layer від'ємне значення, доступ до шарів здійснюється з останнього.
void fix_invalid_tiles() 🔗
Очищає клітини, які не існують в плитці.
void force_update(layer: int = -1) 🔗
Застаріло: Use notify_runtime_tile_data_update() and/or update_internals() instead.
Сил TileMap і шар памовий шар для оновлення.
int get_cell_alternative_tile(layer: int, coords: Vector2i, use_proxies: bool = false) const 🔗
Повертає альтернативний ідентифікатор плитки для комірки на шарі layer у coords.
Якщо use_proxies має значення false, ігнорує проксі-сервери плиток TileSet, повертаючи необроблений альтернативний ідентифікатор. Див. TileSet.map_tile_proxy().
Якщо layer має від'ємне значення, доступ до шарів здійснюється з останнього.
Vector2i get_cell_atlas_coords(layer: int, coords: Vector2i, use_proxies: bool = false) const 🔗
Повертає ідентифікатор координат атласу плиток для комірки на шарі layer з координатами coords. Повертає Vector2i(-1, -1), якщо комірка не існує.
Якщо use_proxies має значення false, ігнорує проксі-сервери плиток TileSet, повертаючи необроблений ідентифікатор координат атласу. Див. TileSet.map_tile_proxy().
Якщо layer має від'ємне значення, доступ до шарів здійснюється з останнього.
int get_cell_source_id(layer: int, coords: Vector2i, use_proxies: bool = false) const 🔗
Повертає ідентифікатор джерела плитки комірки на шарі layer з координатами coords. Повертає -1, якщо комірка не існує.
Якщо use_proxies має значення false, ігнорує проксі-сервери плиток TileSet, повертаючи необроблений ідентифікатор джерела. Див. TileSet.map_tile_proxy().
Якщо layer має від'ємне значення, доступ до шарів здійснюється з останнього.
TileData get_cell_tile_data(layer: int, coords: Vector2i, use_proxies: bool = false) const 🔗
Повертає об’єкт TileData, пов’язаний із вказаною клітинкою, або null, якщо клітинка не існує або не є TileSetAtlasSource.
Якщо layer є від’ємним, доступ до шарів здійснюється з останнього.
func get_clicked_tile_power():
var clicked_cell = tile_map.local_to_map(tile_map.get_local_mouse_position())
var data = tile_map.get_cell_tile_data(0, clicked_cell)
if data:
return data.get_custom_data("power")
else:
return 0
Якщо use_proxies має значення false, ігноруються проксі-сервери плитки TileSet. Див. TileSet.map_tile_proxy().
Vector2i get_coords_for_body_rid(body: RID) 🔗
Повертає координати плитки для даної фізики тіла RID. Цей RID можна отримати з KinematicCollision2D.get_collider_rid(), коли з'єднання з плиткою.
int get_layer_for_body_rid(body: RID) 🔗
Повертає шар черепиці для даної фізики корпусу RID. Цей RID можна отримати з KinematicCollision2D.get_collider_rid(), коли з'єднання з плиткою.
Color get_layer_modulate(layer: int) const 🔗
Повернення модуля TileMap.
Якщо layer є негативним, шари виходять з останнього.
String get_layer_name(layer: int) const 🔗
Повертає назву шара TileMap.
Якщо layer є негативним, шари виходять з останнього.
Повертає RID навігаційної карти NavigationServer2D, призначеної зазначеному шару TileMap layer.
За замовчуванням TileMap використовує навігаційну карту за замовчуванням World2D для першого шару TileMap. Для кожного додаткового шару TileMap створюється нова навігаційна карта для додаткового шару.
Щоб NavigationAgent2D перемикався між навігаційними картами шару TileMap, використовуйте NavigationAgent2D.set_navigation_map() з навігаційною картою, отриманою з get_layer_navigation_map().
Якщо layer від'ємне значення, доступ до шарів здійснюється з останнього.
int get_layer_y_sort_origin(layer: int) const 🔗
Повертає Y сорту TileMap.
Якщо layer є негативним, шари виходять з останнього.
int get_layer_z_index(layer: int) const 🔗
Повертає значення Z-index TileMap.
Якщо layer є негативним, шари виходять з останнього.
int get_layers_count() const 🔗
Повертає кількість шарів в TileMap.
Застаріло: Use get_layer_navigation_map() instead.
Повертаємо RID навігаційної карти NavigationServer2D, призначеної для вказаного шару TileMap шар.
Vector2i get_neighbor_cell(coords: Vector2i, neighbor: CellNeighbor) const 🔗
Повертає сусідню комірку з координатами coords, що визначаються напрямком neighbor. Цей метод враховує різні макети, які може приймати TileMap.
TileMapPattern get_pattern(layer: int, coords_array: Array[Vector2i]) 🔗
Створює нову TileMapPattern з даного шару і набору клітин.
Якщо layer є негативним, шари виходять з останнього.
Array[Vector2i] get_surrounding_cells(coords: Vector2i) 🔗
Повертає список всіх сусідніх комірок до одного на coords.
Array[Vector2i] get_used_cells(layer: int) const 🔗
Повертає масив Vector2i з положеннями всіх клітин, що містять плитку в даній шарі. Клітка вважається порожнім, якщо її ідентифікатор джерела дорівнює -1, її атласні координати ідентифікатори Vector2(-1, -1) і його альтернативний ідентифікатор -1.
Якщо layer є негативним, шари виходять з останнього.
Array[Vector2i] get_used_cells_by_id(layer: int, source_id: int = -1, atlas_coords: Vector2i = Vector2i(-1, -1), alternative_tile: int = -1) const 🔗
Повертає масив Vector2i з положеннями всіх клітин, що містять плитку в даній шарі. Тілі можуть бути фільтровані відповідно до їх джерела (джерело_id), їхні атласні координати (atlas_coords) або альтернативні ідентифікатори (альтернатива_tile).
Якщо параметр має значення, встановлене до за замовчуванням, цей параметр не використовується для фільтрування комірки. Таким чином, якщо всі параметри мають відповідне значення за замовчуванням, цей метод повертає той самий результат, як get_used_cells().
Клітка вважається порожнім, якщо її ідентифікатор джерела дорівнює -1, її атласні координати ідентифікатори є Vector2(-1, -1) і його альтернативний ідентифікатор -1.
Якщо layer є негативним, шари виходять з останнього.
Rect2i get_used_rect() const 🔗
Повертає прямокутник, що закриває використовувану (не спрагу) плитку карти, включаючи всі шари.
bool is_cell_flipped_h(layer: int, coords: Vector2i, use_proxies: bool = false) const 🔗
Повертає true, якщо комірку на шарі layer із координатами coords перевернуто горизонтально. Результат справедливий лише для джерел атласу.
bool is_cell_flipped_v(layer: int, coords: Vector2i, use_proxies: bool = false) const 🔗
Повертає true, якщо комірку на шарі layer із координатами coords перевернуто вертикально. Результат справедливий лише для джерел атласу.
bool is_cell_transposed(layer: int, coords: Vector2i, use_proxies: bool = false) const 🔗
Повертає true, якщо клітинку на шарі layer із координатами coords транспоновано. Результат справедливий лише для джерел атласу.
bool is_layer_enabled(layer: int) const 🔗
Повертаємо увагу, що шар увімкнений.
Якщо layer є негативним, шари виходять з останнього.
Повертаємо вашу увагу на те, що виробництво вбудованих навігаторів шару вводиться.
bool is_layer_y_sort_enabled(layer: int) const 🔗
Повертаємо, якщо шар Y-сортує плитку.
Якщо layer є негативним, шари виходять з останнього.
Vector2i local_to_map(local_position: Vector2) const 🔗
Повертає координати на карті комірки, що містить заданий local_position. Якщо local_position знаходиться в глобальних координатах, перед передачею його цьому методу розгляньте можливість використання Node2D.to_local(). Див. також map_to_local().
Vector2i map_pattern(position_in_tilemap: Vector2i, coords_in_pattern: Vector2i, pattern: TileMapPattern) 🔗
Повернення за даній координаті coords_in_pattern в TileMapPattern відповідні координати комірки, якщо патерн був заданий на позиція_in_tilemap координати (див. set_pattern()). Ця картографія потрібна як у формах кахельних плит, картографування може не працювати шляхом обчислення позиція_in_tile_map + coords_in_pattern.
Vector2 map_to_local(map_position: Vector2i) const 🔗
Повертає центральне положення комірки в локальному координатному просторі TileMap. Щоб перетворити повернене значення на глобальні координати, використовуйте Node2D.to_global(). Див. також local_to_map().
Примітка: Це може не відповідати візуальному положенню плитки, тобто ігнорується властивість TileData.texture_origin окремих плиток.
void move_layer(layer: int, to_position: int) 🔗
Переміщує шар з індексом layer у задану позицію to_position у масиві.
void notify_runtime_tile_data_update(layer: int = -1) 🔗
Повідомляє вузол TileMap, що виклики методу _use_tile_data_runtime_update() або _tile_data_runtime_update() призведуть до різних результатів. Таким чином, це ініціює оновлення TileMap.
Якщо надано параметр layer, сповіщає лише про зміни для заданого шару. Надання аргументу layer (якщо застосовується) зазвичай є кращим з міркувань продуктивності.
Попередження: Оновлення TileMap є обчислювально ресурсоємним і може вплинути на продуктивність. Намагайтеся обмежити кількість викликів цієї функції, щоб уникнути непотрібного оновлення.
Примітка: Це не ініціює пряме оновлення TileMap, оновлення буде виконано в кінці кадру як завжди (якщо ви не викличете метод update_internals()).
void remove_layer(layer: int) 🔗
Видаляє шар в індексі layer.
void set_cell(layer: int, coords: Vector2i, source_id: int = -1, atlas_coords: Vector2i = Vector2i(-1, -1), alternative_tile: int = 0) 🔗
Встановлює ідентифікатори плиток для комірки на шарі layer з координатами coords. Кожна плитка TileSet ідентифікується за допомогою трьох частин:
Ідентифікатор джерела
source_idвизначає ідентифікатор TileSetSource. Див. TileSet.set_source_id(),Ідентифікатор координат атласу
atlas_coordsвизначає координати плитки в атласі (якщо джерело є TileSetAtlasSource). Для TileSetScenesCollectionSource це завжди має бутиVector2i(0, 0)),Ідентифікатор альтернативної плитки
alternative_tileвизначає альтернативу плитки в атласі (якщо джерело є TileSetAtlasSource) та сцену для TileSetScenesCollectionSource.
Якщо
source_idвстановлено на-1,atlas_coordsнаVector2i(-1, -1)абоalternative_tileна-1, комірка буде стерта. Стерта комірка автоматично отримує всі її ідентифікатори, що відповідають їхнім недійсним значенням, а саме-1,Vector2i(-1, -1)та-1.
Якщо layer має від'ємне значення, доступ до шарів здійснюється з останнього.
void set_cells_terrain_connect(layer: int, cells: Array[Vector2i], terrain_set: int, terrain: int, ignore_empty_terrains: bool = true) 🔗
Оновіть усі комірки в масиві координат cells, щоб вони використовували заданий terrain для заданого terrain_set. Якщо оновлена комірка має такий самий рельєф місцевості, як і одна з її сусідніх комірок, ця функція намагається об'єднати ці дві. Ця функція може оновити сусідні плитки, якщо це необхідно для створення правильних переходів між рельєфами.
Якщо ignore_empty_terrains має значення true, порожні ландшафти будуть ігноруватися під час спроби знайти найкраще підходящу плитку для заданих обмежень ландшафту.
Якщо layer від'ємне, доступ до шарів здійснюється, починаючи з останнього.
Примітка: Для коректної роботи цей метод вимагає, щоб TileSet TileMap мав налаштовані ландшафти з усіма необхідними комбінаціями ландшафту. В іншому випадку це може призвести до неочікуваних результатів.
void set_cells_terrain_path(layer: int, path: Array[Vector2i], terrain_set: int, terrain: int, ignore_empty_terrains: bool = true) 🔗
Оновіть усі клітинки в масиві координат path, щоб вони використовували заданий terrain для заданого terrain_set. Функція також з’єднає дві послідовні комірки на шляху з однаковою місцевістю. Ця функція може оновлювати сусідні плитки, якщо потрібно створити правильні переходи місцевості.
Якщо ignore_empty_terrains має значення true, порожні ландшафти ігноруватимуться під час спроби знайти плитку, яка найкраще підходить для заданих обмежень ландшафту.
Якщо layer є від’ємним, доступ до шарів здійснюється з останнього.
Примітка. Щоб цей метод працював належним чином, для TileSet TileMap необхідно налаштувати місцевості з усіма необхідними комбінаціями місцевості. Інакше це може призвести до неочікуваних результатів.
void set_layer_enabled(layer: int, enabled: bool) 🔗
Вмикає або вимикає шар layer. Вимкнений шар взагалі не обробляється (без рендерингу, без фізики тощо).
Якщо layer від'ємне значення, доступ до шарів здійснюється з останнього.
void set_layer_modulate(layer: int, modulate: Color) 🔗
Встановлює колір шару. Він буде помножений на колір плитки та модуляцію TileMap.
Якщо layer від'ємне значення, доступ до шарів здійснюється з останнього.
void set_layer_name(layer: int, name: String) 🔗
Встановлює назву шару. Це здебільшого корисно в редакторі.
Якщо layer від’ємне значення, доступ до шарів здійснюється з останнього.
Увімкнути або вимкнути створення вбудованих навігаційних регіонів шару. Вимкнено це, якщо вам потрібно випікати навігаційні регіони з TileMap за допомогою вузла NavigationRegion2D.
Призначає map як навігаційну карту NavigationServer2D для вказаного шару TileMap layer.
За замовчуванням TileMap використовує навігаційну карту за замовчуванням World2D для першого шару TileMap. Для кожного додаткового шару TileMap створюється нова навігаційна карта для додаткового шару.
Щоб NavigationAgent2D перемикався між навігаційними картами шару TileMap, використовуйте NavigationAgent2D.set_navigation_map() з навігаційною картою, отриманою з get_layer_navigation_map().
Якщо layer від'ємне значення, доступ до шарів здійснюється з останнього.
void set_layer_y_sort_enabled(layer: int, y_sort_enabled: bool) 🔗
Увімкнути або вимкнути шар Y-сортування. Якщо шар Y-сортований, шар буде поводитися в якості полотна.
Я-сортовані шари зазвичай повинні бути на різних значеннях Z-index, ніж не Y-сортовані шари, інакше кожен з цих шарів буде Y-сортований в цілому з Y-сортованим. Це зазвичай небажана поведінка.
Якщо layer є негативним, шари виходять з останнього.
void set_layer_y_sort_origin(layer: int, y_sort_origin: int) 🔗
Налаштовує значення походження шару Y-sort. Це значення Y-sort походження до кожної плитки Y-sort значення походження.
Це дозволяє, наприклад, підробити різні рівні висоти на кожному шарі. Це може бути корисним для ігор з видом на вершину.
Якщо layer є негативним, шари виходять з останнього.
void set_layer_z_index(layer: int, z_index: int) 🔗
Набір шарів Z-index значення. Цей Z-index додано до кожного значення плитки Z-index.
Якщо layer є негативним, шари виходять з останнього.
Застаріло: Use set_layer_navigation_map() instead.
Навігація map як NavigationServer2D навігаційна карта для вказаного шару TileMap шар.
void set_pattern(layer: int, position: Vector2i, pattern: TileMapPattern) 🔗
Вставте заданий TileMapPattern у задані position та layer на карті плиток.
Якщо layer від’ємне значення, доступ до шарів здійснюється з останнього.
void update_internals() 🔗
Тригери прямого оновлення TileMap. Зазвичай, зателефонуйте цю функцію не потрібно, оскільки TileMap оновлення вузлів автоматично при зміні одного з його властивостей або клітин.
Однак, з причин виконання, ці оновлення зараховуються і затримуються до кінця каркасу. Зателефонувавши цю функцію, змусить TileMap оновлювати його безпосередньо.
Попередження: Оновлення TileMap обчислюється дорого і може впливати на продуктивність. Спробуйте обмежити кількість оновлень і скільки плитки вони впливають.