Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: The_Aesir en Agosto 05, 2014, 09:11:05 AM

Título: Problema con Paths
Publicado por: The_Aesir en Agosto 05, 2014, 09:11:05 AM
He probado de todo y nada funciona.

Hasta hace poco, un objeto no solido que seguia cualquier path, no se detenia al colisionar con objetos solidos. Ahora, de la noche a la mañana, se detiene al colisionar con objetos solidos y no se porque puede ser:

- el objeto que sigue el path no es solido (testeado)
- el path_speed no es 0 (testeado)
- el path_position se queda en 0 (testeado)
- si a los objetos que eran solidos lo dejo de hacer solidos, sigue el path correctamente (testeado)
- ya comprobe que ningun otro codigo interfiriera, de hecho, desactive todos los scripts de deteccion de colisiones que habria creado y el problema persiste
- con otro objeto no solido del juego, este problema no ocurre

Es un problema bastante complicado pero no pierdo nada con preguntar.

Saludos!
Título: Re:Problema con Paths
Publicado por: Clamud en Agosto 05, 2014, 04:16:01 PM
Hola, primero debes poner el icono de la versión de GM que usas.

Lo mas seguro es que has agregado un Evento Collision en el objeto que se mueve sobre la Path, lo que hace GM, cuando ocurre una colisión con un objeto sólido, es regresar la instancia a la posición anterior a la colisión, entonces si un objeto sólido está en el trayecto nunca va a avanzar. La solución es borrar el evento Collision, así ignorará la colisión con cualquier objeto.
Título: Re:Problema con Paths
Publicado por: The_Aesir en Agosto 06, 2014, 04:32:21 AM
Cita de: Clamud en Agosto 05, 2014, 04:16:01 PM
Hola, primero debes poner el icono de la versión de GM que usas.

Cierto, lo olvidé  :-[ (Es GM8)

CitarLo mas seguro es que has agregado un Evento Collision en el objeto que se mueve sobre la Path, lo que hace GM, cuando ocurre una colisión con un objeto sólido, es regresar la instancia a la posición anterior a la colisión, entonces si un objeto sólido está en el trayecto nunca va a avanzar. La solución es borrar el evento Collision, así ignorará la colisión con cualquier objeto.

No es eso, porque el otro objeto no solido que tengo en el juego y que sigue un path también tiene eventos de colisión (los mismo que el objeto que no me funciona).

Saludos
Título: Re:Problema con Paths
Publicado por: Clamud en Agosto 06, 2014, 06:21:57 AM
Es cierto, no lo pensé mucho al contestar, pero ya hice unas pruebas. El problema no está en que el objeto tenga eventos de colisión, sino con qué objetos se lanza ése evento. Comprueba el objeto se detiene sólo al colisionar con objetos que están especificados en los eventos colisión, o que esos objetos tienen un objeto padre especificado en un evento colisión.
Título: Re:Problema con Paths
Publicado por: The_Aesir en Agosto 06, 2014, 06:30:12 AM
Cita de: Clamud en Agosto 06, 2014, 06:21:57 AM
Es cierto, no lo pensé mucho al contestar, pero ya hice unas pruebas. El problema no está en que el objeto tenga eventos de colisión, sino con qué objetos se lanza ése evento. Comprueba el objeto se detiene sólo al colisionar con objetos que están especificados en los eventos colisión, o que esos objetos tienen un objeto padre especificado en un evento colisión.

Ya lo comprobé, y en ambos casos (el objeto que falla y el que funciona) los eventos de colisión son con otros objetos (distintos a los que colisionan cuando siguen el path), además de que estos no tienen ningun parent.
Título: Re:Problema con Paths
Publicado por: The_Aesir en Agosto 07, 2014, 10:59:56 PM
Bueno, estoy pensando que al final es un bug del GM8, al final terminé "parcheando" el problema para el objeto que fallaba exclusivamente.

Saludos!
Título: Re:Problema con Paths
Publicado por: Guacusio en Agosto 08, 2014, 12:32:04 AM
Tu problema me parece extremadamente raro, las pistas que entregas van todas en la dirección de que existe algún código para el evento colisión del objeto que sigue el path con un objeto sólido (como dijo Clamud). Que el objeto que sigue el path sea sólido o no debería ser irrelevante.

Dices que cuando los objetos sólidos dejan de ser sólidos el problema desaparece, o cual apunta a una sola cosa: la única diferencia entre un objeto no sólido y uno sólido es que el último provoca que la instancia que colisiona con él regrese a su posición previa, siempre y cuando esta instancia tenga definida alguna acción en su evento de colisión con el objeto sólido. Sería más fácil encontrar una respuesta si indicas qué eventos y códigos tienes en el objeto que sigue el path.

Título: Re:Problema con Paths
Publicado por: The_Aesir en Agosto 08, 2014, 06:55:43 AM
Cita de: Guacusio en Agosto 08, 2014, 12:32:04 AM
Tu problema me parece extremadamente raro, las pistas que entregas van todas en la dirección de que existe algún código para el evento colisión del objeto que sigue el path con un objeto sólido (como dijo Clamud). Que el objeto que sigue el path sea sólido o no debería ser irrelevante.

Dices que cuando los objetos sólidos dejan de ser sólidos el problema desaparece, o cual apunta a una sola cosa: la única diferencia entre un objeto no sólido y uno sólido es que el último provoca que la instancia que colisiona con él regrese a su posición previa, siempre y cuando esta instancia tenga definida alguna acción en su evento de colisión con el objeto sólido. Sería más fácil encontrar una respuesta si indicas qué eventos y códigos tienes en el objeto que sigue el path.

Tengo varios eventos de colision en ese objeto, pero ninguno de los objetos con los que colisiona son sólidos.

De hecho, el motor de colisiones que tengo para ese objeto no toma en cuenta los solidos, sino los objetos que tengan asociado un parent llamado "par_solid". Sin embargo, si ese fuese el problema, al desactivar el "solid" del objeto a colisionar el problema debería seguir, porque el path estaría detenido por los objetos con el parent "par_solid", pero lo extraño es que se soluciona.

El motor de colisiones tiene un montón de scripts, ¿seguro que quieres verlo?. Es bastante largo.

El problema apareció MUCHO DESPUES de haber implementado el motor de colisiones en ese objeto (llevo haciendo pruebas durante 1 año mas o menos desde que lo implementé y el objeto seguía el path normalmente aunque colisionara con objetos sólidos o con el parent "par_solid") y surgió "de la noche a la mañana".

Tengo también un control de versiones del editable, y en la versión anterior (en la que no está este problema de path con este objeto) el código es EXACTAMENTE el mismo, ya lo comprobé, no hubo ningún cambio en ese objeto de una versión a otra.

Podría continuar desde la versión anterior, pero agregé bastantes otras cosas (otros objetos, rooms, sonidos, etc) y me sale mucho más corto parchear el error que rehacer semanas de trabajo con el riesgo de que el mismo problema vuelva a ocurrir.

Saludos y gracias por la ayuda  :)