Ayuda Palib "if" ?

Resulta q no sé cómo hacer para q mi personaje se pare mientras camine y realice otra acción cuando pulso B ,seguro q es una chorrada pero solo consigo q realice dicho movimiento ala vez q camina. Aquí el código con los movimientos:

if(Pad.Newpress.Left) {
      PA_StartSpriteAnim(0, 0, 3, 5, 6);   
      PA_SetSpriteHflip(0, 0, 0);
}   
       
   else if(Pad.Newpress.Right) {
      PA_StartSpriteAnim(0, 0, 3, 5, 6);   
      PA_SetSpriteHflip(0, 0, 1);
}   

   
   if ((Pad.Newpress.A) && (Penguin.vy == 0))
      Penguin.vy = -1000; //
      
      if (Pad.Newpress.B)   {
         PA_StartSpriteAnim(0,0,9,11,6);
         PA_SetSpriteAnim(0,0,0);
                   PA_SetSpriteAnim(0,0,1);
}              


Si alguien es tan amable de ayudarme. [angelito]
Gracias y salu2
Yo no tengo ni idea del palib pero creo que tu problema es de programacion con los ifs

Le tienes que dar prioridad a pulsar el botón B sobre las direcciones, es decir yo haria

If boton b pulsado -> accion botón b
else if direccion izquierda pulsada->mover izquierda   // esto solo se hara si no esta pulsado el botonB
else if direccion derecha pulsada ->mover derecha   // esto solo se hara si no esta pulsado el boton b ni la direccion izquierda

Lo del boton A no se que es, si lo pones en un if a parte se podra hacer al mismo tiempo que se mueve. Si lo metes en el elseif mira que prioridad tiene pulsar ese boton sobre los otros

A ver si te es de ayuda esto ^^ saludos
Celduques está baneado por "utilizar clon para saltarse baneo de subforo y querer tomar el pelo a la administración"
ZePPeLiN escribió:Resulta q no sé cómo hacer para q mi personaje se pare mientras camine y realice otra acción cuando pulso B ,seguro q es una chorrada pero solo consigo q realice dicho movimiento ala vez q camina. Aquí el código con los movimientos:

if(Pad.Newpress.Left) {
      PA_StartSpriteAnim(0, 0, 3, 5, 6);   
      PA_SetSpriteHflip(0, 0, 0);
}   
       
   else if(Pad.Newpress.Right) {
      PA_StartSpriteAnim(0, 0, 3, 5, 6);   
      PA_SetSpriteHflip(0, 0, 1);
}   

   
   if ((Pad.Newpress.A) && (Penguin.vy == 0))
      Penguin.vy = -1000; //
      
      if (Pad.Newpress.B)   {
         PA_StartSpriteAnim(0,0,9,11,6);
         ---->PA_SetSpriteAnim(0,0,0);<----
                   ---->PA_SetSpriteAnim(0,0,1);<----
}              


Si alguien es tan amable de ayudarme. [angelito]
Gracias y salu2

Lo que señalo no sobra?, si especificas más el problema... porque no lo llego a entender xD
2 cosas

1- enved de newpress usa held, 2, pones tambien debajo de cada if que dice si pulsas por ejemplo izquierde se anima de x forma, pues debajo pones que si se suelta el boton vuelva a la animacion inicial.

// si sueltas izquierda
else if (Pad.Released.Right){
// pones aqui la animacion que quieras para parado
}


y asi con todo... despues lo del b sin problema, quero haz lo mismo que con las direcciones.
Plata escribió:2 cosas

1- enved de newpress usa held, 2, pones tambien debajo de cada if que dice si pulsas por ejemplo izquierde se anima de x forma, pues debajo pones que si se suelta el boton vuelva a la animacion inicial.

// si sueltas izquierda
else if (Pad.Released.Right){
// pones aqui la animacion que quieras para parado
}


y asi con todo... despues lo del b sin problema, quero haz lo mismo que con las direcciones.


Creo q he hecho como dices pero me sale este error.
error: expected expression before 'else' [+risas]
quita el if delante del else y se tendria que solucionar..

Saludos
javi_ls escribió:quita el if delante del else y se tendria que solucionar..

Saludos


:-? :-? No entiendo a q te refieres
Te importaria escribir un codigo a modo de ejemplo?

Saludos y gracias
// si sueltas izquierda
else if (Pad.Released.Right){
// pones aqui la animacion que quieras para parado
}

el if marcado en rojo quitarlo, o el else uno de los dos.

Saludos
:( :( El error persiste.

if(Pad.Held.Left) {
      PA_StartSpriteAnim(0, 0, 3, 5, 6);   
      PA_SetSpriteHflip(0, 0, 0);
      else (Pad.Released.Left){
         PA_StarSpriteAnim(0,0,0,3,6);
         }
}   
    if(Pad.Held.Right) {
      PA_StartSpriteAnim(0, 0, 3, 5, 6);   
      PA_SetSpriteHflip(0, 0, 1);
   else (Pad.Released.Right){
      PA_StartSpriteAnim(0,0,0,3,6);
      }
}   
       if (Pad.Newpress.B){
          PA_StartSpriteAnim(0,0,9,11,6);
          PA_SetSpriteHflip(0, 0, 0);
          PA_SetSpriteHflip(0, 0, 1);
       }   


awer q tengo mal. Muchas gracias
if(Pad.Held.Left) {
      PA_StartSpriteAnim(0, 0, 3, 5, 6);   
      PA_SetSpriteHflip(0, 0, 0);
      else (Pad.Released.Left){
         PA_StarSpriteAnim(0,0,0,3,6);
         }
}   
    if(Pad.Held.Right) {
      PA_StartSpriteAnim(0, 0, 3, 5, 6);   
      PA_SetSpriteHflip(0, 0, 1);
}
   else (Pad.Released.Right){
      PA_StartSpriteAnim(0,0,0,3,6);
      }
   
       if (Pad.Newpress.B){
          PA_StartSpriteAnim(0,0,9,11,6);
          PA_SetSpriteHflip(0, 0, 0);
          PA_SetSpriteHflip(0, 0, 1);
       }   


prueba asi sino no se lo que puede ser.
errores [+furioso]
error: expected expression before 'else'
warning: statement with no effect
error: expected ';' before '{' token
Gracias pero creo q esto es imposible XD
A mi me pasaba hace tiempo lo mismo.....y me pase un mes preguntando por los tutoriales de Plata y por mucho que me dijeran no me acababa compilando y si lo hacia lo hacia mal.
Al final lo arregle usando el "while" en vez del "if"....para enmcarcar cada bucle que queria que se hiciera...
pero no me hagas pensar cual que tengo la mente mu turbia..xD
Prueba lo siguiente a ver si te funciona, si no ya no se que puede ser

if (Pad.Newpress.B)   
      {
        PA_StartSpriteAnim(0,0,9,11,6);
        PA_SetSpriteAnim(0,0,0);
        PA_SetSpriteAnim(0,0,1);
      }
         
else if(Pad.Newpress.Left)
      {
      PA_StartSpriteAnim(0, 0, 3, 5, 6);   
      PA_SetSpriteHflip(0, 0, 0);
      }   
       
else if(Pad.Newpress.Right)
      {
      PA_StartSpriteAnim(0, 0, 3, 5, 6);   
      PA_SetSpriteHflip(0, 0, 1);
      }   

   
if ((Pad.Newpress.A) && (Penguin.vy == 0))
      Penguin.vy = -1000; //
BlueRay escribió:Prueba lo siguiente a ver si te funciona, si no ya no se que puede ser

if (Pad.Newpress.B)   
      {
        PA_StartSpriteAnim(0,0,9,11,6);
        PA_SetSpriteAnim(0,0,0);
        PA_SetSpriteAnim(0,0,1);
      }
         
else if(Pad.Newpress.Left)
      {
      PA_StartSpriteAnim(0, 0, 3, 5, 6);   
      PA_SetSpriteHflip(0, 0, 0);
      }   
       
else if(Pad.Newpress.Right)
      {
      PA_StartSpriteAnim(0, 0, 3, 5, 6);   
      PA_SetSpriteHflip(0, 0, 1);
      }   

   
if ((Pad.Newpress.A) && (Penguin.vy == 0))
      Penguin.vy = -1000; //


Ahora no da errores al compilar pero el resultado no es el esperado, para q haga la animación al pulsar B tengo q estar igualmente caminando.
13 respuestas