Buenasss querida comunidad!
Espero que puedan ayudarme con éste problema.

Pasa que mi personaje cambia de sprite cuando está cayendo (vspeed =0 y vspeed > 0), entonces cuando se para en la plataforma en movimiento mientras ésta baja, sale el sprite de caída.

Y cuando está encima de la plataforma en movimiento mientras ésta sube, y doy un salto, al caer se queda pegado en la plataforma con el sprite de caída.

*Puede que haya un cruce de la velocidad de subida y caída del personaje con la velocidad de subida y bajada de la plataforma?

Espero me puedan ayudar.

#1 Agosto 28, 2018, 05:06:40 PM Ultima modificación: Agosto 28, 2018, 05:28:37 PM por dixon2010
Hola buenos días, gusto en saludarle.

1.Tienes que decirle al objeto que use la imagen de salto si no existe un objeto debajo de el a una distancia determinada.
2.La distancia entre la superficie y el objeto personaje debe regularse hasta obtener el resultado deseado.

  :) Muestrame tu código y evaluemos.
Dios nos ayuda y nos da sabiduría para vivir. Cáda código es una obra maestra que hay que respetar aunque exista un código mas eficiente y sencillo.

Genial! Hola bro! tienes razón, así podría arreglarse, ahora estoy revisandolo, y estoy por ponerlo a prueba, añadí esto:


if !place_meeting(x,y+2,Obj_Platf_Mov)
   {
   (aquí el código de cambiar sprite cuando cae)
   }


Que opinas? aún estoy esperando que cargue, a ver si funciona.

Tu código está interesante, yo suelo usar una distancia de y+5
Dios nos ayuda y nos da sabiduría para vivir. Cáda código es una obra maestra que hay que respetar aunque exista un código mas eficiente y sencillo.

Mira bro, acabo de probarlo, poniendo y+2 y también y+5 como tú, y también lo puse para que no cambie a imagen salto cuando está detectando la plataforma móvil 5 pixeles abajo, y si, ahora ya no se queda pegado con la imagen de caída ni salto en la plataforma, pero ahora se queda pegado con la imagen de reposo, (la normal), la plataforma se detiene, y no puedo saltar.

Aquí te paso el código que tengo:


//Imagen Saltando -------------------------------------------------------------------

if !(global.jump_attack = true) || (global.jump_attack = true)             //Si el Jump Attack está APAGADO
    {
    if place_free(x, y+1)                   //Y está en el aire
        {
         if !place_meeting(x,y+5,Obj_Platf_Mov)         //Si NO detecta a 5 pixels abajo la PLATF MóVIL EN VERTICAL
            {
            if sprite_index= Spr_H_Reposo               //Si la imagen está en REPOSO
            sprite_index= Spr_H_Saltos; image_index= 1  //Será IMAGEN SALTO
               
                //Imagen Cayendo
               
                   
                    if vspeed=0
                        {
                        sprite_index= Spr_H_Saltos; image_index= 2  //Imagen Cayendo
                        }
                    if vspeed>0
                        {
                        sprite_index= Spr_H_Saltos; image_index= 2
                        }
                   
            }
            else
            {
            if sprite_index= Spr_H_Saltos
            sprite_index= Spr_H_Reposo
            }
         }
    }


*El "jump_attack" es una habilidad que tiene cuando agarra algo en especial, lo puse que pase todo lo de aquí cuando el jump_attack no está activado, ya que con jump_attack tendrá otra imagen.*

Espero me puedas ayudar (y)

Cita de: Luis En en Agosto 28, 2018, 06:33:29 PM
Mira bro, acabo de probarlo, poniendo y+2 y también y+5 como tú, y también lo puse para que no cambie a imagen salto cuando está detectando la plataforma móvil 5 pixeles abajo, y si, ahora ya no se queda pegado con la imagen de caída ni salto en la plataforma, pero ahora se queda pegado con la imagen de reposo, (la normal), la plataforma se detiene, y no puedo saltar.

Aquí te paso el código que tengo:


//Imagen Saltando -------------------------------------------------------------------

if !(global.jump_attack = true) || (global.jump_attack = true)             //Si el Jump Attack está APAGADO
    {
    if place_free(x, y+1)                   //Y está en el aire
        {
         if !place_meeting(x,y+5,Obj_Platf_Mov)         //Si NO detecta a 5 pixels abajo la PLATF MóVIL EN VERTICAL
            {
            if sprite_index= Spr_H_Reposo               //Si la imagen está en REPOSO
            sprite_index= Spr_H_Saltos; image_index= 1  //Será IMAGEN SALTO
               
                //Imagen Cayendo
               
                   
                    if vspeed=0
                        {
                        sprite_index= Spr_H_Saltos; image_index= 2  //Imagen Cayendo
                        }
                    if vspeed>0
                        {
                        sprite_index= Spr_H_Saltos; image_index= 2
                        }
                   
            }
            else
            {
            if sprite_index= Spr_H_Saltos
            sprite_index= Spr_H_Reposo
            }
         }
    }


*El "jump_attack" es una habilidad que tiene cuando agarra algo en especial, lo puse que pase todo lo de aquí cuando el jump_attack no está activado, ya que con jump_attack tendrá otra imagen.*

Espero me puedas ayudar (y)

Bro! acabo de borrar el else de al final, para que no tenga que cambiar, si no pasa lo del !place_meeting, y cuando sube a la plataforma, ya no se traba, pero cuando está encima de la plataforma y ésta sube, doy un salto, se vuelve a pegar, con la imagen de reposo, y al presionar las teclas de avanzar y retroceder (mientras está pegado) cambia a imagen de salto. Que extraño

Espero puedas ayudarme bro!

Que mascara de colision usas, porque si usas la del sprite, cuando lo cambias tambien cambia la mascara de colision. Tmbien ten en cuenta el punto de origen de los sprites.

Hola! uso una máscara de un sprite distinto, que no es el de mi personaje. Supongo que así, esa máscara será para todos los sprites que cambie mi personaje no?.
Y sobre el punto de origen, no depende de la máscara que le asigne para todos no? ya que cada uno tiene su punto de origen por separado. Respecto a eso, ahora probaré modificando el punto de origen de algunos sprites, a ver si se soluciona, y te aviso (y)

#8 Agosto 28, 2018, 08:24:41 PM Ultima modificación: Agosto 28, 2018, 08:27:47 PM por dixon2010
Amigo, prueba con este código. Es el mismo pero resumido.

[STEP EVENT]

sprite_index= Spr_H_Reposo
//Imagen Saltando -------------------------------------------------------------------
if(place_free(x, y+5))
{
sprite_index= Spr_H_Saltos; image_index= 1+(vspeed>0)
}


Aqui le estamos diciendo al objeto lo siguiente:
1.Que usará dos sprites (Reposo y Salto)
2.Que su sprite_index será por defecto Spr_H_Reposo
3.Que existen dos imágenes de salto (subida y caida)
4.Que se mostrará la imagen de caida solo cuando exista un movimiento hacia abajo.           

Mientras tengas una mascara definida no debe haber problemas
Dios nos ayuda y nos da sabiduría para vivir. Cáda código es una obra maestra que hay que respetar aunque exista un código mas eficiente y sencillo.

Cita de: dixon2010 en Agosto 28, 2018, 08:24:41 PM
Amigo, prueba con este código. Es el mismo pero resumido.

[STEP EVENT]

sprite_index= Spr_H_Reposo
//Imagen Saltando -------------------------------------------------------------------
if(place_free(x, y+5))
{
sprite_index= Spr_H_Saltos; image_index= 1+(vspeed>0)
}


Aqui le estamos diciendo al objeto lo siguiente:
1.Que usará dos sprites (Reposo y Salto)
2.Que su sprite_index será por defecto Spr_H_Reposo
3.Que existen dos imágenes de salto (subida y caida)
4.Que se mostrará la imagen de caida solo cuando exista un movimiento hacia abajo.           

Mientras tengas una mascara definida no debe haber problemas

Ok, entonces eso reemplazaría a tooooodo el código que te pase?

El sprite de Salto tiene 3 subimágenes:

La subimagen 0: Imagen de Jump Attack
La subimagen 1: Imagen de Salto
La subimagen 2: Imagen de Caída

Basado en eso, igual seguiría poniendo esto?:

image_index= 1+(vspeed>0)  //Esto significa que mientras esté cayendo, cambiará a la subimagen, 2 y 3?

#10 Agosto 29, 2018, 01:36:32 AM Ultima modificación: Agosto 29, 2018, 02:03:14 AM por dixon2010
Hola denuevo.

1.El código resumido pretende reemplazar todo el código original.
2.El uso de la imagen 0 no fue especificado en el código original.
3.El código resumido no usa la imagen 0.
4.Intenta explicarme el uso de la imagen cero respondiendo la siguiente pregunta:

¿Cual es el uso de la imagen 0?
Selecciona tu respuesta:
  a. La imagen 0 es usada para indicar que estamos apunto de saltar. (tipo tony hawk )
  b. La imagen 0 es usada para indicar un ataque a algún enemigo.
  c. La imagen 0 es fija y la dos y la tres deben alernarse para producir una secuencia.
  d. Ninguna de las opciones anteriores



Dios nos ayuda y nos da sabiduría para vivir. Cáda código es una obra maestra que hay que respetar aunque exista un código mas eficiente y sencillo.