Enero 22, 2021, 06:56:42 PM Ultima modificación: Enero 23, 2021, 06:53:30 PM por OmarMakero
Saludos Comunidad GM :), de nuevo soy yo :-[.

Esta vez estaba programando un objeto el cual pudiera localizar la llave de una mazmorra y llevarte hacia ella, y si no existia la llave, te llevara hacia la escalera. El problema es que a veces aparece el objeto y a veces no. Estoy convencido de que eso es por el codigo que uso el cual les dejo a continuación.

Create Event:
[gml]camino = path_add();
global.rejilla = mp_grid_create(0,0,room_height/8,room_width/8,16,16);
mp_grid_add_instances(global.rejilla,obj_bloque,false);
if instance_exists(obj_llave)
{objetivo = obj_llave}
if instance_exists(obj_escalera)
{objetivo = obj_escalera}
if (!instance_exists(obj_llave) and !instance_exists(obj_escalera))
{instance_destroy()
}
mp_grid_path(global.rejilla,camino,x,y,objetivo.x,objetivo.y,true);
alarm[0] = 1;[/gml]

Alarm 0 Event:
[gml]global.rejilla = mp_grid_create(0,0,room_height/8,room_width/8,16,16);
mp_grid_add_instances(global.rejilla,obj_bloque,false);
if instance_exists(obj_llave)
{objetivo = obj_llave}
if instance_exists(obj_escalera)
{objetivo = obj_escalera}
if (!instance_exists(obj_llave) and !instance_exists(obj_escalera))
{instance_destroy()}
mp_grid_path(global.rejilla,camino,x,y,objetivo.x,objetivo.y,true);
path_start(camino,4,0,true);
alarm[0] = 5;[/gml]

Step Event:
[gml]if (mp_grid_path(global.rejilla,camino,x,y,objetivo.x,objetivo.y,true) && distance_to_point(objetivo.x,objetivo.y) > 30)
{
path_start(camino,4,0,true);
}
else
{
path_end();
instance_destroy();
}
depth = -y[/gml]

Podeis decirme que tengo mal? Se los agradeceria muchisimo
OmarMakero

Saludos OmarMakero

Creo que deberias ajustar esa parte del evento create y evento alarm[0] en donde añades un objetivo, pues si existen los dos objetivos este se ira con el ultimo que se asigna (osea el segundo)
[gml]
if instance_exists(obj_llave)
  objetivo = obj_llave
else // aveces es necesario añadir un else
if instance_exists(obj_escalera)
  objetivo = obj_escalera
[/gml]
Bueno no se si ese sea el problema pues esos son los eventos del objeto, a lo mejor esta saliendo mal en la parte donde creas el objeto que debe seguir un objetivo

Acabo de probar tu metodo, pero me sigue sin funcionar, además intenté cambiar en el evento step el distance_to_point por distance_to_object pero tampoco. No hay otra manera de poder hacer que el orbe pueda rastrear dos objetos en lugares diferentes de la room y vaya hacia ellos?
OmarMakero

La función distance_to_point suele no funcionarme correctamente a veces, prueba [gml]
Dist = point_distance(x, y, objetivo.x, objetivo.y)
[/gml]
Bueno quizas ayude o quizas no. Puedo preguntarte si el objeto que debe seguir el objetivo ya esta colocado en la room o lo creas por medio de un instance_create()?

#4 Enero 22, 2021, 09:02:06 PM Ultima modificación: Enero 23, 2021, 06:53:12 PM por OmarMakero
Logré solucionar el problema editando las proporciones de la room. Parece ser que las habitaciones se generaban fuera de esta y como el codigo solo incluia dentro de la room pues no lo podia hacer. Nos vemos en el proximo post  8)
OmarMakero