mp_grid_path(id, path, xstart, ystart, xgoal, ygoal, allowdiag);
| Argument | La description |
|---|---|
| id | Index du mp_grid à utiliser |
| path | index du chemin qui doit être utilisé par la fonction |
| x start | Début de la coordonnée x du nouveau chemin |
| y start | Début y coordonnée du nouveau chemin |
| xgoal | Finition x coordonnée du nouveau chemin |
| ygoal | Finition y coordonnée du nouveau chemin |
| allowdiag | Indique si les déplacements diagonaux sont autorisés au lieu de simplement horizontaux ou verticaux |
Renvoie: Booléen.
Avec cette fonction, vous pouvez créer un chemin qui va naviguer d'un point de départ à un point d'arrivée en utilisant un mp_grid que vous avez défini précédemment, en évitant les obstacles qui ont déjà été ajoutés dans la grille. Les arguments xstart et ystart indiquent le début du chemin dans les coordonnées de la pièce, tandis que les arguments xgoal et ygoal indiquent la destination. Vous pouvez également sélectionner un mouvement horizontal / vertical uniquement ou autoriser des mouvements diagonaux complets en spécifiant true dans l'argument allowdiag. La fonction renvoie true (elle a réussi à trouver un chemin) ou false (elle a échoué) ainsi que le chemin choisi. Dans l'image suivante, vous pouvez voir comment tout cela fonctionne ensemble: 
Comme vous pouvez le voir, les objets "pipe" ont été ajoutés dans la grille, ce qui signifie que tout chemin créé doit les contourner. Il y a deux chemins créés dans l'image, un (vert) a été fait avec des diagonales permises et l'autre (rouge) sans. La différence entre les deux est assez évidente avec le chemin vert apparaissant beaucoup plus "élégant" et direct, mais tout dépend de ce que vous allez utiliser pour les mettre à celui que vous préférez. Notez que le chemin est indépendant de l'instance actuelle - c'est un chemin à travers la grille, pas un chemin pour une instance spécifique, même si une instance spécifique peut avoir la variable qui stocke l'index de chemin. Vous devrez peut-être aussi déboguer ces chemins pour voir comment ils sont créés et interagir dans l'environnement de jeu, auquel cas vous devriez utiliser le draw_path fonction.
NOTE: Le chemin doit avoir été préalablement créé (soit en code avec path_add ou en tant que ressource) et sera remplacé par le chemin généré par cette fonction.
global.grid = mp_grid_create(0, 0, room_width div
32, room_height div 32, 32, 32);
mp_grid_add_instances(global.grid, obj_wall, false);
with (obj_Enemy)
{
path = path_add();
if mp_grid_path(global.grid, path, x, y,
obj_Player.x, obj_Player.y, 1)
{
path_start(path, 0, 3, 0);
}
}
Le code ci-dessus crée une variable globale "global.grid", puis génère un mp_grid et affecte son index (id) à cette variable pour l'utiliser dans tous les autres appels de fonction mp_grid. Il ajoute ensuite toutes les instances de "obj_Wall" dans la grille avant d'obtenir toutes les instances de "obj_Enemy" pour créer un chemin, puis utiliser mp_grid_path pour calculer une déroute de leur position à la position de "obj_Player". Si un itinéraire existe, l'objet commence lui-même le long du chemin.