Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: Domenec en Febrero 16, 2013, 09:33:45 AM

Título: Crear polvo cuando tocas el suelo [Solucionado]
Publicado por: Domenec en Febrero 16, 2013, 09:33:45 AM
Nueva duda  :)

Me estoy peleando con que el personaje cuando toque el suelo levante polvo.
Tengo una animacion provisional la cual llamo mediante instance_create que depues destruyo para que no quede en la room. El problema es que no le da tiempo a ver la animacion del polvo entre que la creo y la destruyo.
He de crear un lapso de tiempo entre que aparece y desaparece y tambien me gustaria modificar la velocidad de dicha animacion para relentizarla un poco.
Lo mismo se podria aplicar al entrar y salir del agua.
He buscado lo que he podido pero no se encontrar un ejemplo con el que guiarme o tener una referencia.


Título: Re:Crear polvo cuando tocas el suelo
Publicado por: elviskelley en Febrero 16, 2013, 10:20:53 AM
si usas objects usa esto.
event step
if (image_alpha > .1) then {image_alpha -=.1;} else
{instance_destroy();}
//se va transparentando hasta destruirse.

para la animacion mas lenta
image_speed=.3;
Título: Re:Crear polvo cuando tocas el suelo
Publicado por: penumbra en Febrero 16, 2013, 10:22:32 AM
Puede ser que destruyas la instancia antes que termine su reproducción.

En el evento ANIMATION END del objeto polvo, prueba el código

if instance_exists(ob_polvo)
{
    instance_destroy()          //Destruir instancia una vez que alcance el último fotograma.
}

para controlar la velocidad de reprodución sólo tienes que modificar la variable

image_speed = valor

Valores mayores a 1 aumentan la velocidad de reproduccion, valores menores que 1, la ralentizan. Prueba con 0.5 por ejemplo.
Título: Re:Crear polvo cuando tocas el suelo
Publicado por: Domenec en Febrero 16, 2013, 10:56:18 AM
Cita de: elviskelley en Febrero 16, 2013, 10:20:53 AM
si usas objects usa esto.
event step
if (image_alpha > .1) then {image_alpha -=.1;} else
{instance_destroy();}
//se va transparentando hasta destruirse.

para la animacion mas lenta
image_speed=.3;

Gracias, me puede servir de gran ayuda ese pequeño codigo. Ya no solo por el tema del polvo.  :)

Cita de: penumbra en Febrero 16, 2013, 10:22:32 AM

Puede ser que destruyas la instancia antes que termine su reproducción.

En el evento ANIMATION END del objeto polvo, prueba el código

if instance_exists(ob_polvo)
{
    instance_destroy()          //Destruir instancia una vez que alcance el último fotograma.
}

para controlar la velocidad de reprodución sólo tienes que modificar la variable

image_speed = valor

Valores mayores a 1 aumentan la velocidad de reproduccion, valores menores que 1, la ralentizan. Prueba con 0.5 por ejemplo.

La velocidad sabia como modificarla, mi error estaba en eñ sitio donde la modificaba. No cai en que debia hacerlo dentro del evento del objeto polvo. Error de principiante.  :P

En este caso, ¿seria apropiado realizarlo como script y llamarlo cada vez que el personaje lo requiera?
Lo digo porque es algo que en teoria se repetira numerosas veces.
Título: Re:Crear polvo cuando tocas el suelo
Publicado por: kaliman777 en Febrero 16, 2013, 06:51:34 PM
Yo te recomiendo que uses efectos como polvo, nubes, explosiones:

Mira esto:

The easiest way of creating particles is to use the effects mechanism. Effects are created using the particle system but you do not have to worry about all the details. You simply specify the type of effect, the position where it must be created, its size, and its color. That is all.
There are a number of different kinds of effects:

ef_explosion
ef_ring
ef_ellipse
ef_firework
ef_smoke
ef_smokeup
ef_star
ef_spark
ef_flare
ef_cloud
ef_rain
ef_snow
Some you want to create just once (like the explosion) and some you want to create in every step (like the smoke or the rain). Note that rain and snow are always created at the top of the room so the position is irrelevant in this case.

Even though this might sound limited, they can actually be used to create great effects. For example by creating a smal puff of red smoke below a moving spaceship in each step, a tail of fire is created. The following two functions exist to create the effects:


effect_create_below(kind,x,y,size,color) Creates an effect of the given kind (see above) at the indicated position. size give the size as follows: 0 = small, 1 = medium, 2 = large. color indicates the color to be used. The effect is created below the instances, that is, at a depth of 100000.
effect_create_above(kind,x,y,size,color) Similar to the previous function but this time the effect is created on top of the instances, that is, at a depth of -100000.

If you want to remove all effects, call the following function:


effect_clear() Clears all effects.
Título: Re:Crear polvo cuando tocas el suelo
Publicado por: Domenec en Febrero 16, 2013, 07:02:05 PM
Si, vi esos efectos y probe unos cuantos pero ninguno me convencio para lo que quiero hacer en el proyecto asi que recurri a algo mas tradicional.  :) De todas maneras, algunos si los voy a aprovechar en algun monento u otro...
Esta noche intentare buscar un hueco y ponerme a ello gracias a vuestros consejos.

Edito: al final pude probarlo y funciono perfecto.
Una vez mas...mil gracias... :)