Hola a todos hace mucho no estaba por aquí
tengo un pequeño problema con ayuda de un tutorial de internet consegui hacer un rastro que deja el jugador al moverse todo funciona bien pero hay algo que no logro solventar
quiero que el rastro solo funcione cuando el personaje salte y se mueva en el aire
cuando trato de hacerlo el rastro no se desvanece lentamente si no que de golpe desaparece el ratro entero
me gustaria que cuando el jugador aterrizara las particular se desvanecieran lentamente pero que ya no las genere al caminar por el suelo.
este es mi codigo
create
trail_x = ds_list_create();
trail_y = ds_list_create();
trail_limit = 20;
step
// updating the lists
ds_list_add(trail_x, x);
ds_list_add(trail_y, y);
// limiting the lists
if ds_list_size(trail_x) > trail_limit
{
ds_list_delete(trail_x,0);
ds_list_delete(trail_y,0);
}
draw
for(var i=1; i<ds_list_size(trail_x); i++)
{
draw_set_alpha(i/trail_limit);
draw_sprite(sprite3,-1,trail_x[|i], trail_y[|i]);
}
draw_set_alpha(1);
draw_self()
si alguien tiene un codigo mejor o puede ayudarme a mejor este lo agradecere mucho <3
gracias
Yo para esos casos usaria un objeto que haria de rastro, y controlaria ahi el image_alpha y demas.
Desde el jugador los iria creando cada cierto tiempo solo cuando no esta en el suelo.
Puedes modificar el código del evento step de esta forma
[gml]
if (piso == false)
{
// updating the lists
ds_list_add(trail_x, x);
ds_list_add(trail_y, y);
// limiting the lists
if ds_list_size(trail_x) > trail_limit
{
ds_list_delete(trail_x,0);
ds_list_delete(trail_y,0);
}
}
else //piso == true
{
// reduce the lists
if ds_list_size(trail_x) > 0
{
ds_list_delete(trail_x,0);
ds_list_delete(trail_y,0);
}
}
[/gml]
(el valor de piso debes asignarlo antes de ese bloque de código)
La sugerencia de 3dgeminis es buena, simplificaría mucho las cosas.
Cita de: Clamud en Marzo 22, 2018, 05:44:36 AM
Puedes modificar el código del evento step de esta forma
[gml]
if (piso == false)
{
// updating the lists
ds_list_add(trail_x, x);
ds_list_add(trail_y, y);
// limiting the lists
if ds_list_size(trail_x) > trail_limit
{
ds_list_delete(trail_x,0);
ds_list_delete(trail_y,0);
}
}
else //piso == true
{
// reduce the lists
if ds_list_size(trail_x) > 0
{
ds_list_delete(trail_x,0);
ds_list_delete(trail_y,0);
}
}
[/gml]
(el valor de piso debes asignarlo antes de ese bloque de código)
La sugerencia de 3dgeminis es buena, simplificaría mucho las cosas.
funciona justo como esperaba clamud gracias! <3
y gracias 3dgeminis por la ayuda <3