Noticias

¡Ayuda a la Comunidad GM, haz una donación!

* Sponsor

Comunidad Game Maker

Bienvenid@ a la comunidad hispana de Game Maker. Nuestro objetivo es crear videojuegos y dar soporte en castellano de GM. Para mejorar nuestro servicio hemos implantado, como adicion al reglamento general, algunas normas especificas en los subforos más comunes. ¡No olvides informarte antes de participar!.

Autor Tema: Un objeto a veces aparece y a veces no (Solucionado)  (Leído 656 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado 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:
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;

Alarm 0 Event:
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;

Step Event:
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

Podeis decirme que tengo mal? Se los agradeceria muchisimo
« Última modificación: Enero 23, 2021, 06:53:30 pm por OmarMakero »

OmarMakero
 


No Tienes Permisos Para Dar Puntos
point 0 Puntos

Este tema no recibió puntos.


Desconectado T789

Respuesta #1 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)
if instance_exists(obj_llave)
  objetivo = obj_llave
else // aveces es necesario añadir un else
if instance_exists(obj_escalera)
  objetivo = obj_escalera
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

 


Desconectado OmarMakero

Respuesta #2 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?

OmarMakero
 


Desconectado T789

Respuesta #3 en: Enero 22, 2021, 08:26:59 pm
La función distance_to_point suele no funcionarme correctamente a veces, prueba
Dist = point_distance(x, y, objetivo.x, objetivo.y)
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()?

 


Desconectado OmarMakero

Respuesta #4 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)
« Última modificación: Enero 23, 2021, 06:53:12 pm por OmarMakero »

OmarMakero