Marzo 21, 2018, 05:19:42 AM Ultima modificación: Marzo 24, 2018, 07:45:20 AM por cristopher2545
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
Programame! como a una de tus árcades chinas

GET BEHIND ME DOCTOR!

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
Programame! como a una de tus árcades chinas

GET BEHIND ME DOCTOR!