Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: pepecajon en Noviembre 08, 2012, 08:23:54 PM

Título: Sprite animado que se muestre una sola vez y luego cambie
Publicado por: pepecajon en Noviembre 08, 2012, 08:23:54 PM
Hola a todos,

Estoy haciendo algunas pruebas de juegos de plataformas, y me gustaría que cuando mi personaje toque el suelo tras un salto reproduzca un sprite de toque con el suelo (ponga las manos en el suelo) y luego recupere la posición habitual (el sprite habitual).

Se me ocurre que al saltar cambia una variable salto a 1.

A la colisión con suelo chequee la variable salto, si esta en 0 (no está saltando, no haga nada) pero si está en 1 (acaba de volver de un salto), cambie sprite por el sprite de tocar el suelo, pero no se como hacer para enlazar este con el habitual una vez se haya reproducido, ¿un timer quizá?.

Gracias a todos  ;)
Título: Re:Sprite animado que se muestre una sola vez y luego cambie
Publicado por: Mgbu en Noviembre 08, 2012, 08:47:31 PM
Depende, si la colisión es verdadera todo el tiempo en el que se está en el suelo la forma es fácil: Mientras que haya colision dibujar con las manos en el piso, o si no dibujar caminando normalmente

Lo digo porque hay muchos ejemplos en los cuales al tocar el piso se coloca gravity=0, es decir que no colisionará más con el piso ya que no cae, si no que "vuela bien bajito"

O si no te podés fijar si uno está tocando el piso y hay una velocidad vertical alta, ya que se supone que cuando uno está caminando no tiene casi vspeed (velocidad vertical)
Título: Re:Sprite animado que se muestre una sola vez y luego cambie
Publicado por: pepecajon en Noviembre 08, 2012, 08:49:59 PM
Muchas gracias, entonces ¿recomiendas que en el plataformas se utilize una gravedad para el objeto en todo momento y que colisione realmente con el suelo o que vaya modificando la gravedad según chequee si hay objeto solido debajo o no?.

Gracias de nuevo
Título: Re:Sprite animado que se muestre una sola vez y luego cambie
Publicado por: Mgbu en Noviembre 08, 2012, 09:22:32 PM
No, dejá todo como está, lo que quiero decir es que la forma de resolver el problema depende de cómo hiciste tu juego :-[. ¿No me podés pasar el evento de colisión del jugador con el piso?
Título: Re:Sprite animado que se muestre una sola vez y luego cambie
Publicado por: penumbra en Noviembre 08, 2012, 09:29:30 PM
Más sencillo que un timer o agregar una variable extra, es usar el evento "Animation end", que se encuentra dentro de la categoría "otros". Ahí pondrías algo como

if sprite_index == animación_de_salto
{
    image_index = 0                                           //Esto para asegurarse que la animación nueva comience desde el principio
    sprite_index = animacion_de_aterrizaje
}


Obviamente, tu juego debe estar bien sincronizado para que la animación de salto termine justo al tocar el suelo. Yo tambien manejo una animación de aterrizaje en mi proyecto, aunque no uso animation end, pero el resultado es similar.

En mi juego. en ciertos cambios de animación, la nueva animación empieza en el mismo número de subimagen donde se quedó la animación anterior, lo cual no es lo que quiero,  por eso el uso de image_index = 0
Título: Re:Sprite animado que se muestre una sola vez y luego cambie
Publicado por: Johann en Noviembre 09, 2012, 12:13:21 AM
Yo veo mejor que uses una alarma para darle un tiempo al sprite de las manos tocando el suelo para que se vea. Animation end se activa cuando un sprite termina su animacion, y si esta es de una sola imagen se veria solo durante un step.
Entonces saltas, cuando toques el suelo cambias al sprite de las manos tocando el suelo y activas una alarma, eso donde detectas la colision con el suelo.
[gml]alarm[0]=50 //por dar un ejemplo[/gml]
y en el codigo de la alarm[0] pones que vuelva al sprite normal de caminar:
[gml]sprite_index=sprite_caminar //o como se llame XD[/gml]

Espero que se entienda  :-[