Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: king195 en Marzo 30, 2015, 10:03:50 PM

Título: Problema en Pathfinding
Publicado por: king195 en Marzo 30, 2015, 10:03:50 PM
Es extraño, nada más comenzar el juego todos los objeto enemigos van a parar a la zona izquierda-superior del mapa

(http://i.gyazo.com/1e93bf38e79346ca723ca5f9352e22ae.png)

Step Event del obj_enemigo

grid = mp_grid_create(0,0,room_width div 16,room_height div 16,16,16);
path = path_add();
mp_grid_add_instances(grid,ocollision,1);
mp_grid_path(grid,path,x,y,obj_player.x,obj_player.y,0);
path_start(path,1,"",1);


Me he fijado en el manual de Game Maker y he usado las funciones predefinidas para poder usar el pathfinding pero me ha dado ese error, es empezar a jugar y automáticamente todos los enemigos se van a esa zona izquierda-superior de la Room.
Título: Re:Problema en Pathfinding
Publicado por: penumbra en Marzo 30, 2015, 10:30:28 PM
De entrada, el código crea una rejilla por cada instancia enemiga, cuando una sola rejilla debe servir para todos los enemigos de la habitación. También se están agregando instancias del objeto ocollision a cada una de las rejillas, lo que incrementa el problema de optimización. Se debería usar una condición, antes de arrancar el path, porque NO HAY GARANTÍA de que la función mp_grid_path() devuelva una ruta válida. También me genera dudas el tercer argumento de la función path(start)

Revisa el ejemplo del manual para la función mp_grid_path()
http://docs.yoyogames.com/source/dadiospice/002_reference/movement%20and%20collisions/motion%20planning/mp_grid_path.html (http://docs.yoyogames.com/source/dadiospice/002_reference/movement%20and%20collisions/motion%20planning/mp_grid_path.html)
Título: Re:Problema en Pathfinding
Publicado por: king195 en Marzo 31, 2015, 02:34:14 AM
El fallo ha sido otra cosa totalmente diferente al final, y me he dado cuenta, se ve que si asignas un objeto padre

mp_grid_add_instances()

en esta función, estas petandolo, ocollision es un obj padre no es el objeto en cuestión. He modificado simplemente eso y ya funciono.