Septiembre 23, 2012, 07:31:15 AM Ultima modificación: Septiembre 23, 2012, 05:16:32 PM por Daz
Version de GM:  :GM8:
Informacion adicional: Esta hecho en su mayor parte con codigos (los pocos que conozco)

Hola a todos, creo que es la primera vez que escribo aqui.
El problema es un poco tonto, pero no logro solucionarlo

Tengo un personaje, mas exacto, Megaman
Las animaciones de cuando camina hacia los lados, ya sea derecha o izquerda estan bien
El problema es con las animaciones de Saltar
Tengo 2 Sprites
Uno es cuando salta y va hacia arriba
El otro es cuando va cayendo
El problema es que no logro hacer que cuando salto, ejecute el sprite saltando y que cuando caiga ejecute el sprite de cayendo
No es tan problematico si lo ven asi
El verdadero problema es que la animacion de saltar tiene un comienzo y un final muy distintos, comienza agachado y termina en el aire
Lo mismo pasa con el que esta cayendo
Y pues se repiten una y otra vez, entonces se me ocurrio dividirlos en 5 partes
- Cuando comienza el salto (sin dejar de tocar el suelo)
- Cuando va en el aire hacia arriba
- Cuando llega al punto mas alto
- Cuando va cayendo
- Cuando toca suelo y se acomoda en el terreno

Me parecio que era lo mas indicado, entonces lo estoy con la duda de como puedo hacer para que ejecute los sprites en el orden que debe correctamente?

o si no, cual seria la mejor forma de hacer lo que quiero y que se vea bien ya que el salto tiene 5 etapas y la etapa de cuando va cayendo puede durar mas o menos segun la altura de la caida

De ante mano, gracias :D
Cuando lo termine publicare el codigo para que los demas se puedan guiar

Mira.
Yo creo que tendria que dividirse los sprite solo en 2 partes:
- Saltando
- Cayendo

//Ev_Step_End:
//Saltando:
if (y>yprevious)
{
  sprite_index=Spr_Salta;
}


//Cayendo:
if (y<yprevious)
{
  sprite_index=Spr_Cae;
}

//Ev_Animation_End
if (sprite_index==Spr_Salta)
|| (sprite_index==Spr_Cae)
{
  image_single=image_number-1;
}

Gracias por responder
pero creo que no me sirve de esa forma, por que el sprite por ejemplo de caer tiene 9 frames de animacion los cuales son asi:

0 es al iniciar a caer (que por cierto es bastante irrelevante)
1,2,3,4 y 5 mientras va cayendo (esa animacion que puede repetirse indefinidamente y se vera fluida)
6,7, 8 y 9 cuando termina de caer y se coloca en el suelo
Algo similar ocurre con la animacion de salto
Entonces, si lo hago como dices, la animacion iria desde el 0 hasta el 9 aunque siga en el aire, y se veria mal

El problema es poder hacer que los ejecute en orden segun la etapa del salto en la que este
Sigo intentando que funcione como deberia, pero aun no lo logro completamente
Dividi la animacion en 5 partes (2 saltando, 1 intermedio y 2 cayendo)
y con el evento "Animation End" estoy poniendolo a que al terminar la animacion 1, siga la 2 y en "Step" que al iniciar a cayer (vspeed>0) entonces use la animacion 3 y en "Animation End" que al terminar la 3 ponga la 4 y que cuando toca suelo ejecute la 5 y siga con una que denomine "Stand" que es cuando no esta haciendo nada

Es lo mas logico que se me ocurrio y funciona cuando salta pero no cuando inicia a caer, lo de que toca el suelo si funciono...

event create
c=0; //declaro esta varible para controlar el cambio de subimagenes
event step
if vspeed > 0 and not place_meeting(x,y+vspeed*1.7,other.solid) //si cae y no tropieza con un solido ose un piso.
{
c=5;
}
else
if vspeed > 0 and place_meeting(x,y+vspeed*1.7,other.solid) //si cae y SI tropieza con un solido osea piso.
{
c=9;
}
//ya con esto definí hasta donde cambia la animación ahora el cambio de sprite.
if vspeed > 0
{
sprite_index=spr_Cae; //cambiar al sprite de cae
image_speed=0.3; //velocidad de la animacion
if image_index < c  //si el cambio de imagenes es menor al maximo que es "c"
{image_index +=1;} //cambia hasta ser igual a "c"
else //de lo contrario
{image_index=c;} //se mantiene la animacion en la ultima subimagen, esto evita el bucle de cambio de subimagen.
}

Nota: si no funciona muy bien cambias el other.solid por el nombre del object que sea el padre del todos los objPisos

Creo que ya lo tengo resuelto, gracias por las respuestas, aunque ninguna de las 2 fue como lo solucione, mañana publico el codigo usado