Es extraño, nada más comenzar el juego todos los objeto enemigos van a parar a la zona izquierda-superior del mapa



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.

#1 Marzo 30, 2015, 10:30:28 PM Ultima modificación: Marzo 30, 2015, 10:41:34 PM por penumbra
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

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.