Parte: 1 — Motores 2D y tu primer juego jugable · Fuente: Documentación de Godot 4 ⏱️ Duración estimada: 100 min · Nivel: Intermedio
Hasta ahora tus niveles son unos pocos StaticBody2D colocados a mano. Eso no escala: un plataformas real tiene cientos de bloques. La solución son los tilemaps: pintas el nivel con "azulejos" (tiles) reutilizables a partir de una imagen. En Godot 4.3+ esto se hace con TileMapLayer alimentado por un recurso TileSet.
En esta clase crearás un TileSet desde una imagen, le darás colisión física por tile, pintarás un nivel jugable con un TileMapLayer y probarás el autotiling con terrenos para que los bordes encajen solos. Terminarás entendiendo por qué el tilemap supera a colocar sprites uno a uno y qué principios de diseño de nivel (legibilidad, dificultad progresiva) aplicar.
Al finalizar, el alumno podrá:
TileSet desde una imagen y definir sus tiles y regiones.TileSet.TileMapLayer y organizar capas.| # | Tema | Por qué importa |
|---|---|---|
| 1 | TileSet desde imagen |
Fuente de todos los tiles reutilizables |
| 2 | Regiones y tamaño de tile | Definen cómo se recorta la imagen en azulejos |
| 3 | Colisión física por tile | El nivel colisiona sin colocar cuerpos a mano |
| 4 | TileMapLayer (4.3+) |
Nodo que pinta el nivel; sustituye al viejo TileMap |
| 5 | Capas de tilemap | Separar fondo, colisión y decoración |
| 6 | Terrenos / autotiling | Los bordes encajan automáticamente al pintar |
| 7 | Diseño de nivel | Legibilidad y curva de dificultad hacen el nivel jugable |
TileMapLayer.TileSet. Clave: reemplaza las capas internas del antiguo TileMap.TileSet para un tile. Clave: se activa por Physics Layer del TileSet.collision_layer (World).Necesitas Godot 4.3 o superior (por TileMapLayer) y una imagen de tiles (tileset) — por ejemplo packs gratuitos de Kenney — con cuadrícula regular (16×16 o 32×32). Continúa el proyecto de plataformas con tu Player. Referencias: Usar TileMaps y Usar TileSets.
En tu escena de nivel, añade un nodo TileMapLayer. En su Inspector, en la propiedad Tile Set, elige Nuevo TileSet. Haz clic sobre el recurso para abrirlo en el panel inferior. Configura el Tile Size (p. ej. 16, 16) para que coincida con tu imagen.
En el panel TileSet (abajo), pestaña Tiles, pulsa el botón + para añadir un Atlas y arrastra tu imagen de tileset. Godot preguntará si quiere crear automáticamente los tiles según la cuadrícula: acepta. Ahora tienes todos los azulejos disponibles para pintar.
World (la capa nombrada en la clase 033).Ahora todos los tiles de suelo que pintes tendrán colisión sin colocar cuerpos manualmente.
Selecciona el nodo TileMapLayer en la escena y aparecerá el panel TileMap con tu paleta. Elige un tile y pinta una plataforma horizontal, algunos escalones y un par de plataformas flotantes. Coloca tu Player encima y ejecuta: el personaje camina y salta sobre los tiles gracias a la colisión del TileSet.
Para separar responsabilidades, puedes usar varios TileMapLayer hermanos: uno Fondo (sin colisión, decoración) y otro Colision (suelo sólido). Ordénalos en el árbol para controlar el dibujado.
Tierra.Tierra.Tierra y pinta: Godot elegirá automáticamente los tiles de borde, esquina y relleno correctos.Al pintar, aplica principios básicos:
TileMapLayer de fondo (sin colisión) y píntalo detrás del de colisión.Physics Layer distinta y combínalos con una Area2D de peligro (clase 033).Tierra para pintar una colina y verifica que los bordes conectan solos.Tile Size a 32×32 con otra imagen y reajusta las colisiones.Construye un nivel jugable completo usando TileMapLayer y un TileSet con colisión: al menos una capa de fondo decorativa y una capa de colisión con suelo, escalones y plataformas flotantes. Usa terrenos/autotiling para el suelo principal y aplica una curva de dificultad legible (fácil → introduce mecánica → la combina).
Criterio de aceptación: el jugador recorre el nivel caminando y saltando sobre tiles con colisión real (sin cuerpos colocados a mano); el suelo pintado con terreno muestra bordes y esquinas correctos; el fondo no colisiona; y el recorrido presenta una progresión de dificultad clara y legible.
| Síntoma / mensaje | Causa y cómo arreglar |
|---|---|
| El jugador atraviesa los tiles | El TileSet no tiene Physics Layer o los tiles no tienen polígono; añádelos en el editor del TileSet |
No encuentro TileMap con capas antiguas |
En 4.3+ se usa TileMapLayer (un nodo por capa); no busques el nodo TileMap monolítico |
| Los tiles se ven cortados o desplazados | El Tile Size no coincide con la cuadrícula de la imagen; ajústalo |
| El autotiling pinta tiles incorrectos | Mal definidas las esquinas/lados del terreno; revisa la pestaña Terrains del TileSet |
| La colisión está en la capa equivocada | La Physics Layer del TileSet no apunta a World; corrige su collision_layer |
| El fondo tapa al jugador o al suelo | Orden de nodos incorrecto; coloca el TileMapLayer de fondo antes en el árbol |
❓ ¿TileMap o TileMapLayer? En Godot 4.3+ el flujo recomendado es TileMapLayer: cada capa es su propio nodo, más flexible y explícito. El antiguo TileMap con capas internas quedó obsoleto.
❓ ¿Por qué un tilemap y no muchos sprites? El tilemap comparte una sola textura y datos de colisión, se pinta en bloque, rinde mejor y es infinitamente más rápido de editar que colocar y configurar cientos de nodos.
❓ ¿La colisión va en el TileSet o en el TileMapLayer? El polígono de colisión se define por tile en el TileSet; el TileMapLayer solo lo instancia al pintar. Así todos los tiles iguales comparten la misma colisión.
❓ ¿Qué es exactamente el autotiling? Es la selección automática del tile adecuado (borde, esquina, relleno) según los vecinos, usando las reglas de terreno que definiste. Pintas "tierra" y Godot pone el tile correcto en cada celda.
Clase 034 - Física 2D: RigidBody, gravedad y plataformas
Clase 036 - Máquina de estados del jugador: idle, run, jump, fall