Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: LennyGuzman en Julio 27, 2015, 02:50:54 AM

Título: Instancias en Colisiones
Publicado por: LennyGuzman en Julio 27, 2015, 02:50:54 AM
Hola De Nuevo! :D Gracias a los que me ayudaron en el tema pasado ya puede lograr lo que quiera, pero ahora tengo otro pequeño problema :-/ sucede que quiero que cuando el jugador colisione con un objeto (una Puerta) que aparezca encima del jugador una animación del botón que debe presionar! por ejemplo quiero que cuando colisione con la puerta, aparezca la letra "E" encima del jugador indicando que debe presionar esa tecla para abrir la puerta! Digo animación y no sprite porque la animación consta de 50 fotogramas simulando la animación de la letra "E" apareciendo hacia arriba! Igual si no se puede como lo quiero pues conque aparezca el Sprite de la letra encima del jugador al momento de colisionar! Espero sus respuestas! Muchas Gracias y saludos a todos! :D uso Game Maker 8  :GM8:  ;D  XD
Título: Re:Instancias en Colisiones
Publicado por: fasst007 en Julio 27, 2015, 03:15:42 AM
Haz un evento colision en el personaje con el objeto "puerta" y en el código usa un create_instance(x, y-100, animacion_e) por citar un ejemplo
Título: Re:Instancias en Colisiones
Publicado por: LennyGuzman en Julio 27, 2015, 06:14:59 AM
Cita de: fasst007 en Julio 27, 2015, 03:15:42 AM
Haz un evento colision en el personaje con el objeto "puerta" y en el código usa un create_instance(x, y-100, animacion_e) por citar un ejemplo

Gracias pero ya hize eso y no me funciona :( creo que lo que pasa es que al colisionar no se realiza la accion por la mascara de colision? lo tengo asi mira, en el evento de colision con objeto puerta estan las acciones create instance (applies to: self, object: objeto_E, x:0, y:-100 relative
abajo tengo otra accion de Set Alarm 0 a 40 steps, object: objeto_E
Porque en el objeto_E tengo el event Alarm0 y de acciones tengo Destroy Instance que es para que la instancia desaparesca despues de 40 pasos!
Nose si me entiendes XD me dices si tienes dudas! Gracias :D
Título: Re:Instancias en Colisiones
Publicado por: fasst007 en Julio 27, 2015, 06:38:53 AM
Todo parece bien, pero primero hay que asegurarse que tome la colision.
Entonces en el evento colisión pone algun "display mensaje" con algun mensaje. Porque si sale el mensaje quiere decir que tomó la colisión pero si no sale ningun mensaje es porque no lo está detectando.

Título: Re:Instancias en Colisiones
Publicado por: fasst007 en Julio 27, 2015, 06:48:12 AM
Ah y lo olvidaba... tenés que acomodar la propiedad "depth" del objeto animacion_e para que quede por encima de todo, porque quizás la instancia se crea pero queda debajo de otra. Para asegurarte de eso puedes poner una profundidad (depth) negativa.

Otra cosa, ¿la animación dura 40 pasos en total? porque si es así puedes usar un evento dentro del mismo objeto animacon_e que se encuentra en other->"animation end" y luego poner un código de destrucción. En otras palabras el mismo objeto animado puede llevar incorporado un evento de autodestrucción cuando termine lo que simplificaría las cosas
Título: Re:Instancias en Colisiones
Publicado por: LennyGuzman en Julio 27, 2015, 08:39:29 AM
Cita de: fasst007 en Julio 27, 2015, 06:38:53 AM
Todo parece bien, pero primero hay que asegurarse que tome la colision.
Entonces en el evento colisión pone algun "display mensaje" con algun mensaje. Porque si sale el mensaje quiere decir que tomó la colisión pero si no sale ningun mensaje es porque no lo está detectando.

Si creo que ese es el problema, no esta tomando la colision! hize la prueba de Display Message y no salio, que puedo hacer? :o
Título: Re:Instancias en Colisiones
Publicado por: LennyGuzman en Julio 27, 2015, 08:46:59 AM
Cita de: fasst007 en Julio 27, 2015, 06:48:12 AM
Ah y lo olvidaba... tenés que acomodar la propiedad "depth" del objeto animacion_e para que quede por encima de todo, porque quizás la instancia se crea pero queda debajo de otra. Para asegurarte de eso puedes poner una profundidad (depth) negativa.

Otra cosa, ¿la animación dura 40 pasos en total? porque si es así puedes usar un evento dentro del mismo objeto animacon_e que se encuentra en other->"animation end" y luego poner un código de destrucción. En otras palabras el mismo objeto animado puede llevar incorporado un evento de autodestrucción cuando termine lo que simplificaría las cosas

Gracias ya hize lo de la profundidad pero sigue sin aparecer :( y en lo de lo de los steps la animacion consta de 50 fotogramas que simulan la animacion de la letra subiendo encima del jugador, pero en total nose cuantos pasos dura la animacion, obiamente quiero que cuando el jugador colisione con la puerta aparezca la animacion y se mantenga en su ultimo fotograma y se destruya cuando el personaje se aleje de la puerta, es otra cosa que nose hacer :( espero me puedas ayudar te lo agradezco muchoo! :D
Título: Re:Instancias en Colisiones
Publicado por: jodidox en Julio 27, 2015, 03:23:58 PM
Pasame el gmk, y yo lo edito... así te puedo ayudar mas fácil, pues todo lo que estas pidiendo es posible... pero necesito el archivo gmk para ayudarte :)
Título: Re:Instancias en Colisiones
Publicado por: fasst007 en Julio 27, 2015, 04:32:11 PM
Es que si no te toma la colisión porque no sale el display message que te dije nisiquiera ejecuta el código de crear la instancia porque ese código y la alarma y todo lo demás está dentro del evento colision entonces no se ejecuta nada. Lo que tenés que hacer es ver las máscaras y revisar si pones el objeto correcto para detectar la colisión.
Título: Re:Instancias en Colisiones
Publicado por: LennyGuzman en Julio 27, 2015, 09:18:52 PM
Cita de: fasst007 en Julio 27, 2015, 04:32:11 PM
Es que si no te toma la colisión porque no sale el display message que te dije nisiquiera ejecuta el código de crear la instancia porque ese código y la alarma y todo lo demás está dentro del evento colision entonces no se ejecuta nada. Lo que tenés que hacer es ver las máscaras y revisar si pones el objeto correcto para detectar la colisión.

Amigo! ya arregle el problema de colision! :D pero ahora que colisiona, si se crea la instancia, pero la animacion se queda en el primer fotograma y cuando me alejo del objeto la animacion corre bien y no se destruye la instancia, practicamente quiero todo lo opuesto a eso jaja XD que cuando me acerque al objeto la animacion de la instancia corra bien y que se destruya cuando me aleje! en el evento colision con objeto puerta nomas tengo la accion create instance( applies to: other, x:0, y:-90, Object: Objeto_E, relative.
Espero tus respuestas amigo y gracias por la ayuda :D

Posdata: Decidi cambiar la animacion de la latra E, ya no consta de 50 fotogramas sino de 10 que simulan un brillo por encima de la letra! :D
Título: Re:Instancias en Colisiones
Publicado por: fasst007 en Julio 27, 2015, 10:56:07 PM
Te respondo rapidamente porque tengo que irme al cine  XD
Creo que el problema de que la animación se queda en el primer fotograma radica en que cuando el personaje colisiona con la puerta el evento colisión no entra una sola vez sino que el evento entra 30 veces por segundo (si tenés el juego con 30 frames por segundo) porque creo que entraría en cada paso (step) porque si lo dejas junto a la puerta el evento colisión se verificaría porque sigue colisionando por ese motivo se vuelve a crear una instancia de animacion_e y cuando quiere hacer la animación vuelve a crear otra desde el principio y así siempre quedando en el primer fotograma, pero cuando te alejás ya no entra más en el evento colisión y deja de crear decenas o centenas de instancias del objeto animacion_e y deja a la última creada que termine (esto es solo una suposición).

Entonces tendrías que hacer algún código que en el momento de colisionar en la puerta ejecute una sola vez el código de colisión. Podrías tener una variable que la uses como "bandera" o "marca". Por ejemplo una variable llamada: "corriendo_animacion_e" que en el inicio esté valuada en 0 (o el valor que quieras) y que cuando colisione pregunte ¿la variable "corriendo_animacion_e" es igual a 0 (o el valor que quieras)? si es así que ejecute todo el código de crear la instancia,, etc. y al final cambie esa variable a otro valor por ejemplo "1".
Entonces en el próximo step vuelve a entrar en el evento colisión haciendo la misma pregunta: ¿la variable "corriendo_animacion_e" es igual a 0? en este caso no es cierto porque es "1" entonces no ejecuta el código. De esta forma el código entraria una sola vez en lugar de 30 veces por segundo. Luego al alejarse de la puerta tendría que volver su valor a 0.

Y con respecto a que no se destruye fijate en el código de la alarma o algo de eso debe estar mal o quizás por lo dicho en el párrafo anterior puede ser que si se destruyen pero queda otra animación_e debajo porque se crearon un montón aunque no creo que sea por eso.

Conclusión: Lo primero que tenés que asegurar es que si tenés el jugador junto a la puerta y lo dejas ahí, que se ejecute una sola vez el código de colisión. Fijate en asegurar bien eso y después seguimos avanzando en lo otro.
Título: Re:Instancias en Colisiones
Publicado por: Yoo en Julio 28, 2015, 12:29:03 AM
Dejé un ejemplo adjunto en .gmk ... espero te sirva!!!  :D  :D  :D
Título: Re:Instancias en Colisiones
Publicado por: LennyGuzman en Julio 28, 2015, 05:22:35 AM
Cita de: fasst007 en Julio 27, 2015, 10:56:07 PM
Te respondo rapidamente porque tengo que irme al cine  XD
Creo que el problema de que la animación se queda en el primer fotograma radica en que cuando el personaje colisiona con la puerta el evento colisión no entra una sola vez sino que el evento entra 30 veces por segundo (si tenés el juego con 30 frames por segundo) porque creo que entraría en cada paso (step) porque si lo dejas junto a la puerta el evento colisión se verificaría porque sigue colisionando por ese motivo se vuelve a crear una instancia de animacion_e y cuando quiere hacer la animación vuelve a crear otra desde el principio y así siempre quedando en el primer fotograma, pero cuando te alejás ya no entra más en el evento colisión y deja de crear decenas o centenas de instancias del objeto animacion_e y deja a la última creada que termine (esto es solo una suposición).

Entonces tendrías que hacer algún código que en el momento de colisionar en la puerta ejecute una sola vez el código de colisión. Podrías tener una variable que la uses como "bandera" o "marca". Por ejemplo una variable llamada: "corriendo_animacion_e" que en el inicio esté valuada en 0 (o el valor que quieras) y que cuando colisione pregunte ¿la variable "corriendo_animacion_e" es igual a 0 (o el valor que quieras)? si es así que ejecute todo el código de crear la instancia,, etc. y al final cambie esa variable a otro valor por ejemplo "1".
Entonces en el próximo step vuelve a entrar en el evento colisión haciendo la misma pregunta: ¿la variable "corriendo_animacion_e" es igual a 0? en este caso no es cierto porque es "1" entonces no ejecuta el código. De esta forma el código entraria una sola vez en lugar de 30 veces por segundo. Luego al alejarse de la puerta tendría que volver su valor a 0.

Y con respecto a que no se destruye fijate en el código de la alarma o algo de eso debe estar mal o quizás por lo dicho en el párrafo anterior puede ser que si se destruyen pero queda otra animación_e debajo porque se crearon un montón aunque no creo que sea por eso.

Conclusión: Lo primero que tenés que asegurar es que si tenés el jugador junto a la puerta y lo dejas ahí, que se ejecute una sola vez el código de colisión. Fijate en asegurar bien eso y después seguimos avanzando en lo otro.

Muchas Gracias Amigo!!! :D ya lo pude terminar muchas gracias por toda tu ayuda! :)
como podras ver soy muy nuevo en esto jaja XD y es mi primer juego pero le estoy poniendo mucho detalle y esfuerzo y con un poco de ayuda de esa comunidad y de personas como ustedes se que sera posible gracias de nuevo!! :D
Título: Re:Instancias en Colisiones
Publicado por: LennyGuzman en Julio 28, 2015, 05:34:05 AM
Cita de: Yoo en Julio 28, 2015, 12:29:03 AM
Dejé un ejemplo adjunto en .gmk ... espero te sirva!!!  :D  :D  :D

Muchísimas Gracias!! me facilitaste las cosas te lo agradezco muchoo!! :D XD
te puedo pedir una cosa mas!? te explico jaja XD eske mi juego es de tipo plataforma 2D y lo de la puerta lo queria para que al presionar esa tecla se abra la puerta, me podrias ayudar a como hacer esto, que en lugar de que aparezca el mensaje se abra la puerta! Te lo agradeceria mucho mas! jaja espero tus respuestas y muchas gracias! :D
Título: Re:Instancias en Colisiones
Publicado por: jodidox en Julio 28, 2015, 02:41:15 PM
Busca un sprite con animación, una puerta abierta. Si no estoy mal el Game Maker  :GM8: tiene un sprite de puerta abierta y cerrada,

Saludos,
Título: Re:Instancias en Colisiones
Publicado por: Yoo en Julio 28, 2015, 07:45:36 PM
OK... aki esta... espero q entiendas...ALGUNA DUDA PREGUNTA!!!!  :D  XD  :D
Ahhh... mejoré el EXAMPLE... ya te lo dije, no?  :D