pyxen.GridMap
Un GridMap est un conteneur spatial composé de cellules organisées en lignes et colonnes.
Il définit la disposition des tuiles, la taille des cellules, l’atlas de tuiles optionnel, et l’espace de collision pour les GridBody.
Pour les concepts de collision, consultez Collision.
Constructeur
GridMap(
*,
rows=None,
columns=None,
size=None,
image=None
)
Tous les paramètres sont par mot-clé uniquement.
Paramètres
| Paramètre | Type | Description |
|---|---|---|
rows | int | Nombre de lignes de la grille |
columns | int | Nombre de colonnes de la grille |
size | (width, height) | Taille des cellules en pixels |
image | str | Nom de l’image atlas de tuiles |
Exemple
level_map = GridMap(
rows=10,
columns=16,
size=(16, 16),
image="tileset"
)
Attacher un GridMap
Lors du spawn :
level = world.spawn(
map=GridMap(
rows=10,
columns=16,
size=(16, 16),
image="tileset"
)
)
Ou plus tard :
entity = world.spawn()
entity.map = GridMap(rows=8, columns=8, size=(16, 16))
Propriétés
map.active
| Propriété | Type | Défaut |
|---|---|---|
active | bool | True |
Contrôle si la simulation de collision est active pour cette map. Lorsque la valeur est False, aucun déplacement, collision ou callback n’est traité pour les GridBody attachés à cette map.
# Mettre en pause les collisions (ex. menu pause)
level.map.active = False
# Reprendre les collisions
level.map.active = True
Modifier les tuiles
Utilisez map.set() pour configurer les tuiles.
map.set(
row=0,
column=1,
tile=(tile_column, tile_row),
tag=optional_tag
)
Paramètres
| Paramètre | Type | Description |
|---|---|---|
row | int | Index de la ligne de la grille |
column | int | Index de la colonne de la grille |
tile | (x, y) | Coordonnées de la tuile dans l’atlas |
tag | int | Tag de collision optionnel |
Exemple : Définir une tuile
level.map.set(
row=2,
column=5,
tile=(3, 1)
)
Exemple : Ajouter un tag de collision
level.map.set(
row=4,
column=2,
tile=(0, 0),
tag=1 # wall
)
Coordonnées de la grille
- Les lignes augmentent verticalement
- Les colonnes augmentent horizontalement
Les indices hors limites sont ignorés en toute sécurité.
GridMap + GridBody
Un GridBody interagit avec le GridMap pour la collision, la résolution de déplacement et la détection de déclencheurs.
Le GridBody doit être un enfant de l’entité GridMap.
level = world.spawn(
map=GridMap(
rows=8,
columns=8,
size=(16, 16),
image="tiles"
)
)
player = world.spawn(
body=GridBody(),
parent=level
)
Exemple minimal : Niveau basique
level = world.spawn(
map=GridMap(
rows=8,
columns=8,
size=(16, 16),
image="tiles"
)
)
# Créer le sol
for r in range(8):
for c in range(8):
level.map.set(row=r, column=c, tile=(0, 0))
# Créer les murs
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)
Tags
tag est une métadonnée optionnelle par tuile.
Utilisations typiques :
0— vide1— mur2— eau3— zone de dégâts
Les tags sont interprétés par votre système de gameplay ou de collision.