TilemapRenderer

El componente TilemapRenderer renderiza un mapa basado en tiles. Usa una imagen de tileset como origen de los tiles individuales, dispuestos según un array de IDs de tile. Usa el Transform de la entidad para la posición. Consulta Renderizado para una visión general.

Cada tile se referencia mediante un ID, donde 0 representa espacio vacío. Los datos de tiles pueden proporcionarse directamente, o rellenarse a partir de un mapa de Tiled con el componente TiledWrapper.

Opciones

OpciónTipoValor por defectoDescripción
tilesetTilesetEl tileset que proporciona los tiles (ver más abajo).
datanumber[][]Array de IDs de tile. 0 es espacio vacío.
chunksChunk[][]Datos de tiles divididos en chunks, para mapas grandes.
widthnumber0Ancho del mapa en tiles.
heightnumber0Alto del mapa en tiles.
tileWidthnumberAncho del tile renderizado.
tileHeightnumberAlto del tile renderizado.
layerstring"Default"La capa de renderizado.
opacitynumber1Opacidad entre 0 y 1.
tintColorstringColor usado para tintar los tiles.
maskColorstringColor de máscara aplicado a los tiles.
maskColorMixnumberOpacidad del color de máscara entre 0 y 1.
smoothbooleanfalseSuaviza los píxeles. No recomendado para pixel art.
animationsMap<number, TileAnimation>vacíoTiles animados, indexados por el ID del tile a animar (ver más abajo).

Tileset

CampoTipoDescripción
imageHTMLImageElement | stringLa imagen del tileset, o una cadena con la URL/nombre del recurso.
widthnumberAncho del tileset en tiles.
tileWidthnumberAncho del tile en píxeles.
tileHeightnumberAlto del tile en píxeles.
marginVector2Margen opcional (arriba e izquierda) en píxeles.
spacingVector2Espaciado opcional (abajo y derecha) en píxeles.

Animaciones de tiles

Un TileAnimation hace que un tile recorra una secuencia de IDs de tile del tileset. El mapa animations se indexa por el ID del tile que debe animarse: todos los tiles del mapa con ese ID reproducen la animación. Las animaciones siempre se repiten en bucle.

OpciónTipoValor por defectoDescripción
tilesnumber[][]La secuencia de IDs de tile a recorrer.
fpsnumber12Cuadros por segundo.

Ejemplo

import { Transform, TilemapRenderer } from "angry-pixel";

this.entityManager.createEntity([
    new Transform(),
    new TilemapRenderer({
        layer: "Default",
        tileset: {
            image: this.assetManager.getImage("tileset.png"),
            width: 8,
            tileWidth: 16,
            tileHeight: 16,
        },
        data: [1, 2, 3, 4],
        width: 2,
        height: 2,
    }),
]);

Ejemplo de tiles animados

import { Transform, TilemapRenderer, TileAnimation } from "angry-pixel";

this.entityManager.createEntity([
    new Transform(),
    new TilemapRenderer({
        tileset: {
            image: this.assetManager.getImage("tileset.png"),
            width: 8,
            tileWidth: 16,
            tileHeight: 16,
        },
        data: [1, 2, 3, 4],
        width: 2,
        height: 2,
        // Cada tile con ID 3 recorre 3, 4, 5 a 6 fps.
        animations: new Map([[3, new TileAnimation({ tiles: [3, 4, 5], fps: 6 })]]),
    }),
]);