Mapas de mosaicos
El sistema de tilemap te permite pintar mundos basados en tiles usando máscaras de auto-tilado, múltiples capas y extrusión de paredes con generación de colisiones integrada.
Añadir un tilemap
Añade un Tilemap_Component a cualquier entidad. El tilemap se centra en la posición de la entidad y abarca una cuadrícula de chunks (cada uno de 32×32 tiles). El tamaño total en tiles es width_in_chunks × 32 por height_in_chunks × 32.
Propiedades del tilemap
Ancho / Alto en chunks
Tamaño de la cuadrícula de tiles. Cada chunk es de 32×32 tiles. Un tilemap de 10×10 da 320×320 tiles.
Las capas se configuran individualmente una vez que entras en modo de edición (ver abajo).
Scripting en tiempo de ejecución
Tilemap_Component expone los mismos datos persistentes de capa que usa el editor. Las capas se direccionan mediante un índice basado en cero. Al eliminar una capa, cada índice posterior se desplaza una posición hacia abajo, así que no conserves un índice tras eliminar una capa a menos que lo actualices.
CSL
tilemap := entity.get_component(Tilemap_Component);
ground := tilemap.add_layer(.GROUND);
tilemap.set_layer_tile_size(ground, 1.5);
tilemap.set_layer_tint(ground, v4{0.8, 0.9, 1, 1});
tilemap.add_layer_texture(ground, get_asset(Texture_Asset, "tiles/grass.png"), 1);
tilemap.set_layer_mask(ground, get_asset(Texture_Asset, "$AO/tile_mask.png"));
tilemap.set_tile(ground, 10, 12);
world_position := tilemap.tile_to_world(ground, 10, 12);
tile_x, tile_y := tilemap.world_to_tile(ground, world_position);Las mutaciones del tilemap en CSL son estado de escena normal. Participan en la predicción, el rollback y la reconciliación del servidor igual que otros estados de juego de CSL.
C#
Las llamadas de C# solo mutan la simulación actual. Para un cambio en tiempo de ejecución multijugador, usa el flujo RPC existente del juego para invocar la misma mutación en cada par; la API del tilemap no crea un nuevo canal de replicación.
La API en tiempo de ejecución incluye:
Redimensionado, dimensiones de chunk/tile y conversión de coordenadas locales/globales con conocimiento de la capa.Adición, eliminación, vaciado, tipo, modo/orden de renderizado, tamaño del tile, tinte, máscaras, contornos, ajustes de pared y ajustes de colisión.
Adición, reemplazo, reajuste de peso, eliminación y búsqueda de texturas ponderadas.
Operaciones individuales de consulta, establecimiento y borrado de tiles.
Los tilemaps tienen al menos 2×2 chunks. Al redimensionarlos se conserva el centro del mapa, se desplazan las coordenadas de tile existentes según la mitad de la diferencia de tamaño y se recortan los tiles que quedan fuera de los nuevos límites. Las escrituras de tiles fuera de los límites no hacen nada y las consultas devuelven false. Los pesos de textura deben ser no negativos y cada capa admite como máximo 256 texturas.
Los índices de capa o textura inválidos y los ajustes de capa inválidos se rechazan en el límite del scripting. C# lanza una ArgumentOutOfRangeException (o ArgumentException para el límite de cantidad de texturas), mientras que CSL informa de un error de script que contiene el valor inválido y el rango válido.
El tinte de capa multiplica la capa completa, incluyendo contornos y partes superiores de las paredes. Los cambios de tinte se aplican como un uniforme de renderizado y no vuelven a hornear los tiles ni reconstruyen la colisión. Los múltiples cambios de tiles y colisión realizados antes de la siguiente actualización del tilemap se consolidan en una sola reconstrucción de geometría/colisión.
Modo de edición
Selecciona la entidad del tilemap y haz clic en el Editar botón del inspector para entrar en el modo de edición del tilemap. Haz clic en Cancelar para salir. El modo de edición se desactiva automáticamente si deseleccionas la entidad.
Mientras editas, un borde rojo delimita los límites del tilemap y se dibuja una cuadrícula superpuesta en la vista de escena.
Herramientas
El editor del tilemap tiene tres modos de herramienta, que se cambian mediante atajos de teclado:
Pincel
B/W
Pinta tiles haciendo clic y arrastrando.
Borrador
E
Elimina tiles haciendo clic y arrastrando.
Sello
S/R
Selecciona una región para copiarla y luego pégala en otro lugar.
También puedes mantener pulsado Shift mientras estás en modo Pincel para borrar temporalmente.
Pintado con pincel
Haz clic y arrastra para pintar tiles en la capa seleccionada. El pincel usa interpolación de línea de Bresenham entre fotogramas, así que nunca te saltas tiles aunque te muevas rápido.
El tamaño del pincel se ajusta con [ y ] (rango 1–32). El pincel es circular: los tiles dentro del radio se ven afectados.
Alt+clic dibuja una línea recta desde tu última posición de clic hasta el tile actual, útil para bordes largos y rectos.
Ctrl+arrastrar cambia al modo de relleno rectangular: arrastra para definir un rectángulo y todos los tiles de la región se rellenan (o se borran si también se mantiene pulsado Shift) al soltar.
Capas
Cada tilemap admite múltiples capas. Haz clic en una capa en el inspector para seleccionarla para pintar. La capa seleccionada se resalta en azul.
Añadir y eliminar capas
Haz clic en Añadir capa en la parte inferior para crear una nueva capa.
Haz clic en Eliminar capa dentro del panel de una capa para borrarla.
Propiedades de la capa
Tipo
Suelo o Pared. Los tiles de suelo son planos; los tiles de pared se extruyen verticalmente.
Modo de capa
Predeterminado usa capas automáticas (suelo detrás del jugador, paredes ordenadas por Y). Manual te permite establecer un valor fijo de capa de renderizado.
Capa manual
Solo se muestra en modo Manual. El valor explícito de capa de renderizado.
Tamaño del tile
Tamaño visual de cada tile en unidades del mundo.
Tinte
Multiplicador de color para la capa completa, incluidas las partes superiores de las paredes y los contornos.
Texturas
Una o más texturas con pesos para variedad aleatoria. El motor calcula un hash de las coordenadas del tile para elegir determinísticamente una variante de textura por tile según los pesos.
Máscara
Una textura de cuadrícula 8×8 usada para el auto-tilado. Cada celda corresponde a una configuración diferente de adyacencia (bordes, esquinas, aislado, etc.). Se incluye un mapa predeterminado $AO/tile_mask.png
Contorno
Color para los contornos de los tiles (alfa 0 = sin contorno).
Variedad de múltiples texturas
Cada capa puede tener varias texturas con pesos. Los tiles seleccionan de forma determinista una variante de textura basada en un hash de sus coordenadas de cuadrícula, de modo que el patrón es estable entre guardados y no cambia cuando añades o eliminas tiles.
Ajusta el valor de peso junto a cada textura para controlar con qué frecuencia aparece en relación con las demás.
Auto-tilado
Los tiles seleccionan automáticamente la celda de máscara correcta según su configuración de vecinos en 8 direcciones. El sistema:
Comprueba los 8 vecinos (N, NE, E, SE, S, SW, W, NW).
Los vecinos diagonales solo cuentan si ambos vecinos cardinales adyacentes están presentes (evita artefactos visuales en las esquinas).
Mapea la máscara de adyacencia de 8 bits resultante a una de 64 celdas de la textura de máscara 8×8.
Esto significa que solo necesitas pintar la presencia de tiles: los visuales correctos de borde, esquina e interior se calculan automáticamente.
Capas de pared
Establecer el tipo de una capa en Pared habilita la extrusión vertical. Los tiles de pared se colocan en la cuadrícula igual que los tiles de suelo, pero cada tile colocado genera una columna de tiles de cuerpo que se extiende hacia arriba por la Altura de pared.
Propiedades de pared
Altura de pared
Número de tiles de alto que tiene cada columna de pared (mínimo 2).
Textura superior
Textura separada para la fila superior de la pared (la «tapa»).
Máscara superior
Textura de máscara para la parte superior de la pared (usa el mismo auto-tilado de 8 vecinos que el suelo).
Contorno superior
Color del contorno para los tiles superiores de la pared.
Los cuerpos de las paredes usan la textura principal de la capa. Las partes superiores de las paredes usan los vecinos de la fila base, lo que mantiene limpios los bordes de la tapa.
Las paredes se ordenan por Y según su fila base, así que los jugadores caminan detrás de las paredes que están por encima de ellos y delante de las que están por debajo.
Colisión de pared
Colisión
Genera bordes de obstáculos para la reconstrucción de la malla de navegación.
Inset
Reduce hacia dentro los bordes de colisión desde los límites del tile para una colisión más ajustada.
Desplazamiento
Desplaza todos los bordes de colisión por una cantidad fija.
Dibujo de depuración
Dibuja bordes de colisión verdes en la vista de escena para depuración.
Cuando la colisión está activada, el motor construye bordes de obstáculo a partir de los límites expuestos de los tiles. Las mallas de navegación con reconstrucción automática activada incorporan esos bordes.
Herramienta Sello (copiar y pegar)
Pulsa S para cambiar al modo Sello. Esto habilita un flujo de trabajo de selección de región:
Seleccionar: Haz clic y arrastra para resaltar una región rectangular. Los tiles seleccionados se copian al portapapeles. Un mensaje emergente «Copiado» confirma la acción.
Pegar: Pulsa
Ctrl+Vpara entrar en modo fantasma. Una vista previa translúcida del portapapeles sigue el cursor.Girar: Usa la rueda del ratón para girar la vista previa fantasma en incrementos de 90 grados.
Colocar: Haz clic para estampar los tiles. Mantén pulsado Shift mientras haces clic para colocar varias copias sin salir del modo fantasma.
Cancelar: Pulsa
Escapepara salir del modo fantasma sin colocar nada.
Mantén Ctrl mientras inicias una selección de sello para copiar tiles de todas las capas a la vez, conservando las estructuras de múltiples capas.
Resumen de atajos de teclado
B o W
Cambiar a la herramienta Pincel
E
Cambiar a la herramienta Borrador
S o R
Cambiar a la herramienta Sello
Shift (mantenida)
Borrar temporalmente mientras estás en modo Pincel
[ / ]
Disminuir / aumentar el tamaño del pincel
Ctrl+arrastrar
Relleno rectangular con la herramienta Pincel o Borrador activa
Alt+clic
Dibujar una línea recta desde el último clic
Ctrl+V
Entrar en modo pegar/fantasma
Rueda del ratón
Girar la vista previa fantasma (en modo fantasma)
Shift+clic
Colocar varias copias (en modo fantasma)
Escape
Cancelar el modo fantasma
Última actualización