Hola. Estoy haciendo un juego de plataformas y en ?l tengo unas platafromas solidas, y otras que puedes atravesar desde debajo (jump-through). El caso es que los cambios de sprite en el suelo s?lido los hace correctamente, y en la plataforma jump-through no, se queda en la animacion de saltando y no s? por qu?. Hice un script con varios argumentos para especificar los cambios de sprite ya que de tantos errores que me sal?an me era m?s c?modo hacer un script y poner todos los cambios ahi.

Aqui los eventos del personaje:
Create:
//Variable para saber a qu? direccion miran
direccion=1
//Variable para saber si est?s en el aire
aire=0
//Variable para saber si nadas
nadando=0
//Variable para saber si corren mucho
atodapastilla=0
//Variable para saber cu?ndo puedes realizar el doble salto
doblesalto=2
//Variable para saber si est?s golpeado o no. Si lo est?s, normalmente el resto de eventos no te afectar?n
estado=0


Step:
//Activar la gravedad
if(place_free(x,y+1))
{
    gravity = 0.5;
}
else{
gravity=0
}
//L?mite de la velocidad vertical. Evita que el objeto caiga a una velocidad cada vez mayor
if (vspeed >= 12)
{
    vspeed = 12;
}
//Comprobar que est? en el suelo o en el aire
if gravity=0
{
    aire=0
}
else
{
    aire=1
}
if global.saludpersonaje>0{
//Si est?s cayendo sin remedio y aun te queda salud es mejor que dejes de estar en estado golpeado
if vspeed=12{
estado=0

End Step: (Dejo el script ya que en este evento s?lo est? la acci?n de ejecutarlo)
//argument0=personajeestaticoderecha, argument1=estaticoizquierda,argument2=corriendo derecha
//argument3=corriendoizquierda, argument4=corriendomuchoderecha, argument5=corriendomuchoizquierda
//argument6=saltandoderecha, argument7=saltandoizquierda, argument8=nadandoderecha,
//argument9=nadandoizquierda, argument10=escalando, argument11=golpeadoderecha, argument12=golpeadoizquierda
if estado=0{

if place_meeting(x,y,obj_cuerda){
sprite_index=argument10;
if speed=0{image_speed=0};
if not speed=0{image_speed=1};}

else{
if nadando=1{
if xprevious<x{sprite_index=argument8}
if xprevious>x{sprite_index=argument9}}

else{
if aire=0{
if speed=0 and direccion=1{sprite_index=argument0}
if speed=0 and direccion=2{sprite_index=argument1}
if xprevious<x and atodapastilla=0{sprite_index=argument2}
if xprevious>x and atodapastilla=0{sprite_index=argument3}
if xprevious<x and atodapastilla=1{sprite_index=argument4}
if xprevious>x and atodapastilla=1{sprite_index=argument5}}
if aire=1{
if xprevious<x{sprite_index=argument6}
if xprevious>x{sprite_index=argument7}
if xprevious=x and sprite_index=argument0{sprite_index=argument6}
if xprevious=x and sprite_index=argument1{sprite_index=argument7}
}
}
}
}
if estado=1{
if xprevious<x{sprite_index=argument12}
if xprevious>x{sprite_index=argument11}}


Colision con la plataforma jump through:
if vspeed>0&&yprevious+(sprite_height-sprite_yoffset)<=other.y+1
    {
    gravity=0;
    vspeed=0;
    y=other.y-(sprite_height-sprite_yoffset);
    doblesalto=2;
    if estado=1{
    estado=0}
    else{}
    }


Y eso es todo. El personaje se queda en el sprite de saltando, cambia de izquierda a derecha cuando se mueve en dichas direcciones, pero no cambia ni al sprite de est?tico ni al de andando (o corriendo, como pone en el script).

No se me ocurre qu? puede estar mal, ?alguien me echa un cable?

Gracias de antemano :)

 :-[ um nose... no es complicado pero no se si entiendo bien lo que dices. segun lo que he entendido creo cuando saltas se cambia al sprite de saltar pero cuando aterrizas se queda en el de saltar no? si es eso no es un problema grave pero dimelo porque no e entendido muy bien lo que pides

Si, es eso. Cuando atterizo en el suelo normal, el sprite cambia de manera correcta, pero al aterrizar en la plataforma jump-through se queda en el sprite de salto.

recibi tu mensaje :)
te puedo echar una mano encantado, pero necesito que me mandes un ejemplo de asta donde llevas echo en gm6 o en gm7 (no tengo el 8 :'( )
intenta mandarmelo en privado porque se me olvida con frecuencia mirar los posts, si tienes algun problema y no puedes mandarmelo dimelo en intetare ayudarte. ;)

#4 Agosto 28, 2010, 06:27:06 PM Ultima modificación: Agosto 28, 2010, 06:29:31 PM por slampdesign
hice un ejemplo para ti, no tomes en cuenta la parte de step, solo cuando colisiona con el bloque o la plataforma jump-trought desde arriba(a?adiendo una expresion de: "vspeed > 0 && y < other.y+8"), cambia el sprite del player...espero te sirva

EDIT:

Ups, no me di cuenta que tenias GM7..el ejemplo esta en gm8... :'( :-[

Siento haber tardado tanto en contestar, no me pude conectar antes. Cuando le ped? a nano que si sab?a c?mo solucionarlo me lo dijera por favor, decid? reintentar programar el objeto entero. No s? por qu?, pero el caso es que funcion? perfectamente. Tuve otro peque?o error, pero con a?adir +1 a una l?nea de c?digo (seguramente se deb?a a la altura del sprite) se solucion?. Ahora mismo me funcionan perfectamente los saltos y el spriteo as? que gracias de todas formas a todos :) .

Si alguien necesita que le ponga lo que que hice con el objeto que me avise, de todas formas seguramente lo pondr?.

Gracias otra vez a todos :) .