TilemapRenderer
TilemapRenderer
El componente TilemapRenderer
renderiza mapas 2D basados en tiles (baldosas) en pantalla.
Utiliza una imagen de tileset como fuente para las baldosas individuales, que se organizan según un array de IDs de tile proporcionado.
Admite características como tintado, enmascaramiento, control de opacidad y dimensiones personalizadas de tiles.
Los mapas pueden renderizarse en chunks para mejorar el rendimiento con mapas grandes. Cada tile se referencia mediante un ID, donde el valor 0 representa espacio vacío.
Propiedades
Propiedad | Tipo | Descripción |
---|---|---|
layer |
string |
Capa de renderizado donde se dibujará el tilemap. |
tileset |
Tileset |
Configuración del tileset utilizado para renderizar los tiles. |
data |
number[] |
Array de IDs de tiles. El ID 0 representa espacio vacío. |
chunks |
Chunk[] |
Datos de tiles divididos en chunks. Útil para mapas grandes. |
width |
number |
Ancho del tilemap en cantidad de tiles. |
height |
number |
Alto del tilemap en cantidad de tiles. |
tileWidth |
number |
Ancho de cada tile (en píxeles). |
tileHeight |
number |
Alto de cada tile (en píxeles). |
tintColor |
string |
Color con el que se tintarán las tiles. |
maskColor |
string |
Color de máscara que se aplicará sobre el tilemap. |
maskColorMix |
number |
Intensidad de la mezcla de la máscara (entre 0 y 1). |
opacity |
number |
Opacidad del tilemap (valor entre 0 y 1). |
smooth |
boolean |
Si es true , aplica suavizado de píxeles (no recomendado para pixel art). |
Ejemplo mínimo
const tilemapRenderer = new TilemapRenderer({
layer: "Default",
tileset: {
image: this.assetManager.getImage("tileset.png"),
width: 10,
tileWidth: 32,
tileHeight: 32,
},
data: [1, 2, 3, 4],
width: 2,
height: 2,
tileWidth: 32,
tileHeight: 32,
});
Ejemplo completo usando data
const tilemapRenderer = new TilemapRenderer({
layer: "Default",
tileset: {
image: this.assetManager.getImage("tileset.png"),
width: 10,
tileWidth: 32,
tileHeight: 32,
margin: new Vector2(0, 0),
spacing: new Vector2(0, 0),
},
data: [1, 2, 3, 4],
chunks: [],
width: 2,
height: 2,
tileWidth: 32,
tileHeight: 32,
tintColor: "#FFFFFF",
maskColor: "#FF0000",
maskColorMix: 0,
opacity: 1,
smooth: false,
});
Ejemplo completo usando chunks
const tilemapRenderer = new TilemapRenderer({
layer: "Default",
tileset: {
image: this.assetManager.getImage("tileset.png"),
width: 10,
tileWidth: 32,
tileHeight: 32,
},
chunks: [
{
data: [1, 2, 3, 4],
x: 0,
y: 0,
width: 2,
height: 2,
},
],
width: 2,
height: 2,
tileWidth: 32,
tileHeight: 32,
tintColor: "#FFFFFF",
maskColor: "#0000FF",
maskColorMix: 0.5,
opacity: 1,
smooth: false,
});
Notas
- Los tiles con ID
0
son considerados espacio vacío y no se renderizan. - Para mapas muy grandes, es recomendable utilizar
chunks
para mejorar el rendimiento. - El tileset debe definir el tamaño del tile y la imagen fuente. El margen y espaciado son opcionales y se utilizan si la imagen tiene separaciones entre tiles.
- El suavizado (
smooth
) puede mejorar gráficos vectoriales o tiles de alta resolución, pero no es recomendable para pixel art. - Después de crearse el
TilemapRenderer
, un sistema procesará sus datos.- Si los datos se cargaron en la propiedad
data
, el sistema crearáchunks
automáticamente. - Si se cargaron
chunks
, la propiedaddata
será actualizada para reflejar todos los tiles que componen loschunks
. - Esto permite tener acceso de lectura a ambos formatos, aunque internamente el sistema de renderizado siempre utiliza los
chunks
para dibujar.
- Si los datos se cargaron en la propiedad
- La lógica de renderizado y procesado de tiles es gestionada por el sistema que procesa los componentes
TilemapRenderer
. El componente únicamente define las propiedades visuales.