Creador: hardraid
Version GM:
Descripción: Varios de ustedes ya conocieron mi antiguo post sobre sombras con particulas pero no estaba tan afinado

ahora aprovechando que mi post ya no esta voy a mostrar una version actualizada, requiere un solo script y no dos como el anterior, es mas rapido, y lo mas importante dibuja la sombra de los sprites animados a diferencia del anterior que era estatico.
Les dejo un ejemplo adjunto.Modificacion 2.01:Se a agregado una condición para que en los casos que el sprite no tenga velocidad, no dibuje la animacion de la sombra. lamentablemente no encontre la forma de variar la velocidad de animacion de las particulas. Tambien se a establecido una profundidad menor a la del objeto, por defecto es asi si el objeto tiene la profundidad por defecto, pero en caso contrario no, con esto se soluciona.
ATENCION: En el evento destroy colocar:
part_system_destroy(sis_sombra);//para elimianr el sistema de particulas y librar la memoria utilizada.
Tambien coloquen el codigo en el evento "End Step" despues de cualquier otra funcion.Codigo://scr_sombra(alpha,escala);
//1º argumento: para ponerle la transparencia de la sombra, lo normal seria 0.5.
//2º argument2: para ponerle la escala(tamaño) de la sombra, 1 equivale al tamaño normal.
if!(variable_local_exists('sis_sombra'))//si no existe el sistema de particulas...
{
sis_sombra=part_system_create();//creamos sistema de particulas.
part_system_depth(sis_sombra,depth+1);//profundidad menor a la del objeto.
sombra=part_type_create();//creamos el tipo de particula.
emi_sombra=part_emitter_create(sis_sombra);//creamos el emisor.
}
part_type_sprite(sombra,sprite_index,1,0,0);//la particula va a ser el sprite actual.
part_type_color1(sombra,c_black);//indicamos color negro.
part_type_alpha1(sombra,argument0);//indicamos transparencia
part_type_scale(sombra,argument1,argument1);//escala un poquito mas grande q el sprite normal.
part_type_orientation(sombra,image_angle,image_angle,0,0,0);//angulo de la particula igual al del sprite.
if(image_speed){//si la imagen tiene velocidad...
part_type_life(sombra,image_number,image_number);//la duracion sera igual a la duracion del sprite.
}else{
part_type_life(sombra,1,1);
}
part_type_death(sombra,1,sombra);//cuando se muere crea otra.
sp=point_distance(xprevious,yprevious,x,y);//obtenga la velocidad en base a su posicion por steps.
part_type_speed(sombra,sp,sp,0,0);//establecemos la velocidad.
dir=point_direction(xprevious,yprevious,x,y);//obtenemos la direccion en base a la coordenadas de cada step.
part_type_direction(sombra,dir,dir,0,0);//establecemos la dreccion.
if(part_emitter_exists(sis_sombra,emi_sombra)){//si existe el emisor...
part_emitter_region(sis_sombra,emi_sombra,x+2,x+3,y+2,y+3,ps_shape_rectangle,ps_distr_linear);//indicamos la region donde se crearan las particulas.
part_emitter_burst(sis_sombra,emi_sombra,sombra,1);//iniciamos el emisor.
part_emitter_destroy(sis_sombra,emi_sombra);//destruimso el emisor.
}