Ознайомлення з TileMapLayer
Що таке TileMapLayer?
TileMapLayer - пояснення та використання.
TileMapLayer — це клас/Node у рушії Godot, який використовується для створення 2D-карт, що складаються з плиток (tiles).
Кожен TileMapLayer може мати свій TileSet, який визначає, які плитки можна використовувати для побудови карти. Він також підтримує різні функції, такі як колізія, навігація та інші.
- tile_set — вказує на набір плиток, які будуть використовуватися.
- enabled — увімкнути або вимкнути рендеринг шару.
- collision_enabled — дозволяє або забороняє колізію для плиток.
- navigation_enabled — дозволяє використовувати шари для навігації (наприклад, для AI).
- rendering_quadrant_size — розмір регіону, який використовується для рендерингу.
Ось кілька важливих властивостей TileMapLayer:
Початок роботи з TileMapLayer.
Для початку роботи з TileMapLayer необхідно:
- Створити
TileSet, де визначаються всі доступні плитки. - Призначити цей
TileSetдоTileMapLayer. - Використовувати інструменти редактора для розміщення плиток на карті.
Як використовувати TileMapLayer?
TileMapLayer - використання на практиці.
Базова структура.
Для початку потрібно створити наші Nodes:
- Node2D
- MapNode у якому ми будемо зберігати наші TileMapLayer
- BackgroundTileMapLayer з назвою Background
- ForegroundTileMapLayer з назвою Foreground
TileSet.
Далі потрібно створити TileSet, для цього перейдіть в меню TileMapLayer(Foreground), пункт 'Tile set', натисніть кнопку 'New tileset'.
Далі потрібно TileSet настроїти, почніть з розміру одного tile, для тайлів з прикладу встановіть 128x128.
Потім додайте Physics Layer.
TileSet з зображення(Spritesheet).
Скачайте Tileset.png:
↓ Tileset.pngДобавте його у папку свого проєкту.
Натисніть на Node Foreground, потім натисніть на TileSet у інспекторі.
Потім натисніть TileSet у нижньому меню.
Дальше перетягніть Tileset.png в вкладку Tile Source.
В поп-апі натисніть Yes.
Перейдіть у меню Paint.
У дроп-давн меню виберіть Physics Layer 0.
Добавте фізичний шар як це показано у відео.
Використання TileSet.
Щоб не робити TileSet заново - збережіть його у файл та загрузіть цей файл у Background.
Додаємо персонажа
Додаємо персонажа до нашої гри - TileMapLayer та персонаж.
using Godot;
public partial class CharacterBody2d : CharacterBody2D
{
// Швидкість руху персонажа. Використовуємо float, бо це число з плаваючою комою, що дозволяє більш плавне керування.
private const float Speed = 500.0f;
// Метод, який викликається, коли вузол (node) стає готовим до роботи.
// Це схоже на метод `main` в інших мовах. Тут ми можемо виконати початкову ініціалізацію.
public override void _Ready()
{
// Виводимо текст "TEST!" в консоль Godot для перевірки, що скрипт працює.
GD.Print("TEST!");
}
// Метод, який викликається на кожному фізичному кадрі.
// Фізичний кадр відбувається з фіксованою частотою, що корисно для фізичних симуляцій.
// double delta - це час, який минув між поточним та попереднім фізичним кадром.
public override void _PhysicsProcess(double delta)
{
// Отримуємо напрямок руху від користувача.
Vector2 direction = GetDirection();
// Обчислюємо вектор швидкості, помножуючи напрямок на швидкість.
Vector2 velocity = direction * Speed;
// Встановлюємо швидкість персонажа. CharacterBody2D має властивість Velocity, яка визначає його швидкість.
Velocity = velocity;
// Переміщуємо персонажа і обробляємо колізії.
// MoveAndSlide() використовує фізичний рушій Godot для переміщення персонажа і обробки зіткнень з іншими об'єктами.
MoveAndSlide();
}
// Метод, який визначає напрямок руху персонажа на основі натиснутих клавіш.
public Vector2 GetDirection()
{
// Створюємо новий вектор напрямку, початково встановлений в (0, 0).
Vector2 direction = new Vector2();
// Перевіряємо, чи натиснута клавіша "W". Якщо так, додаємо -1 до Y-компоненти напрямку (рух вгору).
if (Input.IsPhysicalKeyPressed(Key.W))
{
direction.Y += -1;
}
// Перевіряємо, чи натиснута клавіша "S". Якщо так, додаємо 1 до Y-компоненти напрямку (рух вниз).
if (Input.IsPhysicalKeyPressed(Key.S))
{
direction.Y += 1;
}
// Перевіряємо, чи натиснута клавіша "A". Якщо так, додаємо -1 до X-компоненти напрямку (рух вліво).
if (Input.IsPhysicalKeyPressed(Key.A))
{
direction.X += -1;
}
// Перевіряємо, чи натиснута клавіша "D". Якщо так, додаємо 1 до X-компоненти напрямку (рух вправо).
if (Input.IsPhysicalKeyPressed(Key.D))
{
direction.X += 1;
}
// Повертаємо вектор напрямку.
return direction;
}
}build info
- compiler
- 2.0.5.1 · 4054EF9BF6C4510A
- built
- 2026-11-08 14:31:25 UTC
WebUniverse