Editor de mapas de mosaicos

Un mapa de mosaicos es un nivel: una cuadrícula de celdas pintadas con los mosaicos de una de tus imágenes, con etiquetas que lee tu código y objetos colocados en él, el inicio del héroe, monedas, cofres. Se abre en el editor de mapas de mosaicos, en iPad y en Mac.

Abrir el editor de mapas de mosaicos

Elige un .tilemap en Archivos: se abre directamente en el editor. Para crear uno, elige Archivo › Nuevo asset… y luego Mapa de mosaicos (consulta Proyectos y assets).

La barra nombra el mapa e indica su tamaño, el de sus mosaicos y el zoom. Mosaicos | Objetos elige la capa que editas (L). Cuadrícula muestra las líneas de las celdas, y Ajustes del mapa vincula el conjunto de mosaicos, cambia el tamaño del mapa y fija el tamaño de celda.

Pintar mosaicos

En la capa Mosaicos, la columna lateral muestra el conjunto de mosaicos: haz clic en un mosaico para tomarlo, o arrastra sobre varios para tomar un sello. Las herramientas recorren el borde del lienzo, cada una con su tecla:

Pintar etiquetas (T) pinta la etiqueta elegida bajo el conjunto de mosaicos en lugar de mosaicos, y Mostrar etiquetas las muestra sobre el mapa. El código lee la etiqueta de una celda con map.hit(…): la etiqueta 2 para los muros, por ejemplo (consulta Colisión).

La capa Objetos

Los objetos son nombres sobre celdas: dónde empieza el héroe, una fila de monedas, un cofre. Elige Objetos en la barra (L) para colocarlos. La columna lateral pasa a ser la paleta de objetos: cada sprite del proyecto, dibujado con su primer fotograma y con su nombre. El nombre de un objeto es el de su sprite, y es lo que lee tu código.

Un objeto nunca cae sobre otro: un movimiento a una celda ocupada se rechaza, el objeto vuelve y el editor dice qué contiene la celda. Mantén ⌥ para intercambiarlos. Eliminar, Cortar, Copiar y Pegar actúan sobre los objetos (un grupo pegado sigue al puntero hasta que haces clic). Mostrar nombres (N) muestra todos los nombres; si no, un nombre aparece cuando seleccionas o señalas su objeto. Relleno, Rectángulo y Pintar etiquetas aparecen atenuados en la capa Objetos.

En la capa Mosaicos, los objetos siguen en el mapa al 40 %, y un clic pinta el mosaico bajo un objeto, nunca el objeto.

En este mapa cuenta los objetos de cada nombre; haz clic en un nombre para seleccionarlos todos. Un clic derecho en el mapa abre el menú de la capa.

Tipos

Nuevo tipo…, en la paleta, da nombre propio a un fotograma de un sprite: un guard dibujado con el segundo fotograma del sprite del slime, junto al slime. Un tipo se guarda con el mapa y aparece en la paleta tras los sprites.

Renombrar un sprite en Archivos pregunta ¿Renombrar también sus 3 objetos? cuando hay objetos de los mapas del proyecto dibujados con él: Renombrar objetos los renombra en cada mapa, con los tipos dibujados con él, y un solo Deshacer devuelve juntos el nuevo nombre y los objetos; Mantener sus nombres los deja. Un objeto cuyo sprite se eliminó, o se renombró sin él, conserva su nombre, dibujado con línea discontinua hasta que un sprite o un tipo vuelva a llamarse así.

En iPad

Un toque coloca un objeto donde se levanta el dedo. Con Seleccionar, arrastra un objeto para moverlo; con cualquier herramienta, una pulsación larga levanta un objeto para moverlo, o muestra su menú si sueltas sin moverlo. La cápsula de edición sobre el mapa tiene Eliminar en la capa Objetos. Dos dedos desplazan y hacen zoom, y nunca colocan nada.

En el código

map.things() enumera los objetos como (name, row, column):

level = world.spawn(map=GridMap(tilemap="level"))

for name, row, column in level.map.things():
    if name == "coin":
        place_coin(row, column)   # la función de tu juego

Consulta GridMap para el formato y el resto de funciones del mapa.

Usado en el código, en la barra del panel, lista las líneas de tus scripts que nombran este mapa; elige una para ir a ella. En el código, Cmd+clic en el nombre del mapa te trae de vuelta aquí.

Deshacer y rehacer

Cada cambio es un paso de Deshacer (Cmd+Z): un trazo de mosaicos, un arrastre que coloca una fila de monedas, el movimiento de varios objetos.