He estado empezando a programar un juego para la DS, y para lo poco que llevo, ya estoy muy con-ten-to^^
Pero hay un detalle que querria añadir para que quedara mejor, y es lo siguiente:
if(Pad.Newpress.Down) { PA_StartSpriteAnim(0,0,22,22,8); PA_SetSpriteHflip(0,0,0); }
Como se puede ver, la animacion cambia si se pulsa Abajo en el Pad.
if(Pad.Newpress.X) { PA_StartSpriteAnimEx(0, 0, 9, 21, 8, ANIM_UPDOWN, 1); PA_SetSpriteHflip(0,0,0); }
¿Como podria hacer para que si el sprite mirase a la derecha, las animaciones que tengo puestas miraran hacia la derecha, y si el sprite mirase a la izquierda, las dos anim. mirasen a la izquierda?
En esas lineas de codigo, las animaciones miran a la derecha.
Y tambien que se pararan en ese estado, tanto de X como de Y, es decir, que no se movieran ni las animaciones ni los sprites pulsando otras teclas mientras se pulsan esas, como con Pad.Newpress.Right y todas esas por el estilo.
Se que son unas preguntas un poco tontas, pero lo intente lo que pude, y nada...
Gracias.
hola Draco, campeon. Como
hola Draco, campeon. Como sabes todavia no he hecho servir las animaciones en zenit para las explosiones. Sin embargo, intentaré ayudarte. Primero, supongo que cuando pulsas abajo quieres hacer solo un cambio de sprite, por que veo que la animacion inicial y la final es la misma. Luego al pulsar X se mueve el martillo con una animacion oscilante. Una pregunta... si no aplicas la PA_SetSpriteHflip ¿ hacia que lado miras? yo imagino que a la IZQUIERDA, ya me diras, en fin, creo que debes darle por programa diferentes estados al personaje. Una forma sencilla es con defines. Asi:
<code>
#define QUIETO -1
#define MIRANDOIZQUIERDA 0
#define MIRANDODERECHA 1
#define AGACHADOIZQUIERDA 2
#define AGACHADODERECHA 3
#define MARTILLEOIZQUIERDA 4
#define MARTILLEODERECHA 5
Yo suelo hacerlo con enumeraciones pero es lo mismo y algo más complicado.
Entonces,
int estadoPersonaje=QUIETO;
//control del mando
if(Pad.Held.Left){estadoPersonaje = MIRANDOIZQUIERDA;}
if(Pad.Held.Right){estadoPersonaje = MIRANDODERECHA;}
if(Pad.Held.Down){
if(estadoPersonaje %2 == 0) //se divide entre 2 y si el resto es 0 (pares) esta mirando a la izquierda. Fijate los 'izquierda' son 0,2,4,...otras operaciones a la izquierda seran 6, 8, 10, etc...
estadoPersonaje = AGACHADOIZQUIERDA;
else
estadoPersonaje = AGACHADODERECHA;
}
if(Pad.Held.x){
if(estadoPersonaje %2 == 0) //se divide entre 2 y si el resto es 0
(pares) esta mirando a la izquierda. Fijate los 'izquierda' son
0,2,4,...otras operaciones a la izquierda seran 6, 8, 10, etc...
estadoPersonaje = MARTILLEOIZQUIERDA;
else
estadoPersonaje = MARTILLEODERECHA;
}
//movimiento segun estado
switch(estadoPersonaje)
{
case MIRANDOIZQUIERDA:
//sprite o animacion mirando izquierda
break;
case MIRANDODERECHA:
//sprite o animacion mirando izquierda
PA_SetSpriteHflip(screen, obj, hflip); lo giramos a la derecha.
break;
case AGACHADOIZQUIERDA:
//sprite o animacion correspondiente mirando izquierda
break;
case AGACHADODERECHA:
//sprite o animacion correspondiente mirando izquierda
PA_SetSpriteHflip(screen, obj, hflip); lo giramos a la derecha.
break;
case MARTILLEOIZQUIERDA:
//sprite o animacion correspondiente mirando izquierda
break;
case MARTILLEODERECHA:
//sprite o animacion correspondiente mirando izquierda
PA_SetSpriteHflip(screen, obj, hflip); lo giramos a la derecha.
break;
}
</code>
Ya te digo que no tengo usada todavia las animaciones, pero este te podria servir como esqueleto del juego, recuerda tambien que este codigo no está probado y puede darte problemas directamente, lo que pretendia es dar una idea...
Saludos!
Visita mi blog. Zenit + 5 will win
Gracias
Gracias, pero al final, debido a lo que tengo a parte de esas funciones en el main.c, lo de quitar el Hflip me funciono.
De todos modos, gracias, le sacare partido a esto ;)
Street Fighter X Tekken Mobile CMV 2
Pues deja los PA_SpriteHflip
Pues deja los PA_SpriteHflip cuando pulses derecha o izquierda y quitalos de la X y abajo.
Salu2
Vaya...
Y yo estrujandome el cerebro que si el if, el while, el else... Y solo tenia que quitar eso.
Mil gracias!