Noticias

Se ha publicado un nuevo servicio, el Portal de Juegos Online

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: Animación se repite continuamente  (Leído 176 veces)

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

Desconectado Fashion_Trozos

  • Habitual
  • *
  • Puntos: 141
  • Mensajes: 72
    • Ver Perfil
en: Febrero 25, 2019, 11:44:10 am
Hola, buenas a todo el mundo. Es la primera vez que posteo en este foro.

Soy un completo novato en este mundo de la programación y es posible que lo que vaya a preguntar sea algo muy básico, llevo dos días intentándolo y no lo consigo.
La situación es la siguiente. Se trata de que cuando el personaje (protagonista) se acerque a una lapida aparezca una fantasma (con una animación) y después se quede flotando (me imagino que con otra animación diferente).

Esto es lo que puse en el evento Step de la lapida

Código: [Seleccionar]
if distance_to_object(objectPersonaje) <10 {
instance_create_layer(x,y,"Instances",objectFantasmaAparicion)
}

El problema es que cuando me acerco a la lapida no para de repetirse la animación y van apareciendo fantasmas todo el tiempo.
Mi intención es que haga la aparición una sola vez y después se quede flotando para poder iniciar un dialogo con el. Tengo una segunda animación con un segundo objeto (que es el fantasma flotando, nada una chorrada se mueve un pixel arriba y otro abajo) y la idea es esa, que aparezca y se quede flotando.

No se si me he explicado bien del todo, espero que con esta información me podais ayudar, un saludo!

 


No Tienes Permisos Para Dar Puntos
point 0 Puntos

Este tema no recibió puntos.


Desconectado Arcadian

Respuesta #1 en: Febrero 25, 2019, 01:28:39 pm
Chequea si el fantasma ya existe también, en la primera línea de código, añade esto otro:

Código: [Seleccionar]
and instance_exists(objectFantasmaAparicion)=false

 
Los siguientes usuarios dieron las gracias a este tema: Fashion_Trozos


Desconectado Fashion_Trozos

  • Habitual
  • *
  • Puntos: 141
  • Mensajes: 72
    • Ver Perfil
Respuesta #2 en: Febrero 25, 2019, 03:56:31 pm
Chequea si el fantasma ya existe también, en la primera línea de código, añade esto otro:

Código: [Seleccionar]
and instance_exists(objectFantasmaAparicion)=false

Muy buenas! Añadiendo esta linea que me planteas ha funcionado a medias! pero sí, era exactamente lo que necesitaba.
Poniendo esto:

Código: [Seleccionar]
if distance_to_object(objectPersonaje) <10 and instance_exists(objectFantasmaAparicion) = false
        {
instance_create_layer(780,420,"Instances",objectFantasmaAparicion)
}

La animación seguía repitiéndose, pero no creaba un fantasma detrás del otro, antes se llegaba a ver como se creaban varios fantasmas por segundo (evento Step). Añadiendo la linea que me pasaste se veía como se creaba un fantasma y al finalizar la animación se repetía la animación desde el principio, pero no varios a la vez (uno por frame, me imagino). Teniendo esto solucionado añadí un evento Otro/fin de la animación y ahí puse:

Código: [Seleccionar]
image_index = 20
image_speed = 0

Donde 20 es el ultimo cuadro de la animación.

Haciéndolo así funciona. Mi pregunta ahora es, ¿como puedo hacer que después de finalizar la animación pase a la otra animación del fantasma flotando?

Lo que he echo es añadir esto:

//He cambiado el sprite
Código: [Seleccionar]
sprite_index = spriteFantasmaFlotando;
image_index = 0;
image_speed = 1
Ahora sucede la animacion (se ve como el fantasma va formandose mientras sale de una lapida) y después pasa a la otra animación (se queda el fantasma ya formado flotando, se mueve un pixel arriba y otro abajo)

Lo hariais de esta manera?
« última modificación: Febrero 25, 2019, 04:00:48 pm por Fashion_Trozos »