pyxen.GridMap
Un GridMap es un contenedor espacial formado por celdas organizadas en filas y columnas.
Define la disposición de tiles, el tamaño de celda, el atlas de tiles opcional y el espacio de colisión para GridBody.
Para conceptos de colisión, consulta Colisión.
Constructor
GridMap(
*,
rows=None,
columns=None,
size=None,
image=None
)
Todos los parámetros son solo por nombre.
Parámetros
| Parámetro | Tipo | Descripción |
|---|---|---|
rows | int | Número de filas |
columns | int | Número de columnas |
size | (width, height) | Tamaño de celda en píxeles |
image | str | Nombre de imagen del atlas de tiles |
Ejemplo
level_map = GridMap(
rows=10,
columns=16,
size=(16, 16),
image="tileset"
)
Adjuntar un GridMap
Durante spawn:
level = world.spawn(
map=GridMap(
rows=10,
columns=16,
size=(16, 16),
image="tileset"
)
)
O después:
entity = world.spawn()
entity.map = GridMap(rows=8, columns=8, size=(16, 16))
Propiedades
map.active
| Propiedad | Tipo | Por defecto |
|---|---|---|
active | bool | True |
Controla si la simulación de colisiones se ejecuta para este mapa. Cuando es False, no se procesan movimientos de cuerpos, colisiones ni callbacks para ningún GridBody adjunto a este mapa.
# Pausar colisiones (ej. menú de pausa)
level.map.active = False
# Reanudar colisiones
level.map.active = True
Modificar tiles
Usa map.set() para configurar tiles.
map.set(
row=0,
column=1,
tile=(tile_column, tile_row),
tag=optional_tag
)
Parámetros
| Parámetro | Tipo | Descripción |
|---|---|---|
row | int | Índice de fila de la cuadrícula |
column | int | Índice de columna de la cuadrícula |
tile | (x, y) | Coordenadas del tile en el atlas |
tag | int | Etiqueta de colisión opcional |
Ejemplo: establecer un tile
level.map.set(
row=2,
column=5,
tile=(3, 1)
)
Ejemplo: añadir etiqueta de colisión
level.map.set(
row=4,
column=2,
tile=(0, 0),
tag=1 # wall
)
Coordenadas de la cuadrícula
- Las filas aumentan verticalmente
- Las columnas aumentan horizontalmente
Los índices fuera de los límites se ignoran de forma segura.
GridMap + GridBody
Un GridBody interactúa con el GridMap para colisión, resolución de movimiento y detección de disparadores.
GridBody debe ser hijo de la entidad GridMap.
level = world.spawn(
map=GridMap(
rows=8,
columns=8,
size=(16, 16),
image="tiles"
)
)
player = world.spawn(
body=GridBody(),
parent=level
)
Ejemplo mínimo: nivel básico
level = world.spawn(
map=GridMap(
rows=8,
columns=8,
size=(16, 16),
image="tiles"
)
)
# Crear suelo
for r in range(8):
for c in range(8):
level.map.set(row=r, column=c, tile=(0, 0))
# Crear paredes
for c in range(8):
level.map.set(row=0, column=c, tile=(1, 0), tag=1)
level.map.set(row=7, column=c, tile=(1, 0), tag=1)
Etiquetas
tag es metadato opcional por tile.
Usos típicos:
0— vacío1— pared2— agua3— zona de daño
Las etiquetas son interpretadas por tu sistema de juego o colisión.