Ir al contenido
Descargar

Escenario con tiles

Quieres armar el nivel pintando el suelo y las paredes, sin arrastrar un objeto para cada bloque.

  1. Tileset. Importa la imagen de los tiles como sprite, córtala al tamaño del tile y crea el tileset con + › Novo tileset… (nuevo tileset). En su pestaña, haz clic en los tiles que son sólidos (suelo, pared).
  2. Capa. En el panel Camadas, + Camada › Tiles. Ponle el nombre Chao.
  3. Pinta. Elige un tile en la paleta del Inspector y arrastra en la room. El botón derecho borra.

El paso a paso completo está en Tileset y tiles.

Nada cambia. El jugador de plataformas es el mismo que cuando el suelo era un objeto sólido:

void Player::onUpdate() {
hspeed = axis("esquerda", "direita") * 1.5f;
if (pressed("pular") && onGround()) vspeed = -4.5f;
moveAndStop();
}
  • Los tiles marcados como sólidos en el tileset bloquean el movimiento, como un objeto con Sólido marcado.
  • moveAndStop() se detiene en el tile, y onGround() ve el tile debajo del jugador.
  • La colisión se hace por la cuadrícula, mirando solo los tiles que toca la caja del jugador. Un nivel grande, lleno de tiles, no se vuelve más lento.

Adornos que no colisionan. Crea otra capa de Tiles, Enfeites, y desactiva Colide (colisiona) en el Inspector. Pinta en ella el pasto, las flores y los carteles.

Saber en qué tile está el jugador. tileAt devuelve el número del tile en un punto (o -1 si no hay tile), y solidAt dice si hay algo sólido ahí:

if (tileAt("Chao", x, y + 12) == 7) Audio::play("passo_na_pedra");
if (solidAt(x + 10, y)) flipX = !flipX;

Bordes y esquinas solos. Marca un terreno en el tileset y usa el pincel de terreno. Mira Tileset y tiles.