Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: OmarMakero en Enero 22, 2021, 06:56:42 PM

Título: Un objeto a veces aparece y a veces no (Solucionado)
Publicado por: OmarMakero en Enero 22, 2021, 06:56:42 PM
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
Título: Re:Un objeto a veces aparece y a veces no
Publicado por: T789 en Enero 22, 2021, 07:06:43 PM
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
Título: Re:Un objeto a veces aparece y a veces no
Publicado por: OmarMakero en Enero 22, 2021, 08:20:41 PM
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?
Título: Re:Un objeto a veces aparece y a veces no
Publicado por: T789 en Enero 22, 2021, 08:26:59 PM
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()?
Título: Re:Un objeto a veces aparece y a veces no
Publicado por: OmarMakero en Enero 22, 2021, 09:02:06 PM
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)