Bueno, al grano xDDD
Tengo un ligero problema con la gravedad, bueno, quizas algo mas que ligero:
He conseguido que el sprite salte (milagro), pero no se porqué, no se mueve, ni para izquierda ni para la derecha.
Dejo el main.c:
// Includes #include <PA9.h> // Include for PA_Lib #include "gfx/all_gfx.h" #include "gfx/all_gfx.c" #include "escape.h" s32 vy=0; s32 y,x; #define GRAVITY 48 // Function: main() int main(int argc, char ** argv) { PA_Init(); // Iniciar PA_Lib PA_InitVBL(); PA_InitText(1,0); AS_Init(AS_MODE_SURROUND | AS_MODE_16CH); // Iniciar x = 0<<8; y = (192-87)<<8; // el fondo de la pantalla... punto fijo vy = 0; // sin saltar PA_LoadSpritePal (0, 1, (void*) boo_Pal); PA_CreateSprite(0, 1, (void*)boo_Sprite, OBJ_SIZE_32X32, 1, 1, 5, 103); // Comenzar la animación. Una vez iniciada, funciona por sí sola ! PA_StartSpriteAnim(0, // pantalla 1, // número de sprite 0, // el primer frame es el 0 3, // el último frame es el 3, ya que tenemos 4 frames... 8); // Velocidad, establecida a 5 frames por segundo... PA_LoadSpritePal(0, // Pantalla 0, // Numero de paleta (void*)heroe_Pal); // Nombre de paleta PA_CreateSprite(0, // Pantalla 0, // Numero de sprite (void*)heroe_Sprite, // Nombre de sprite OBJ_SIZE_64X64, // Tamaño de sprite 1, // Modo 256 colores 0, // Número de paleta 99, 105); // Posicion X e Y en la pantalla PA_LoadSpritePal(0,3,(void*)Arbol_Pal); PA_CreateSprite(0,3,(void*)Arbol_Sprite,OBJ_SIZE_32X32,1,3,6,119); PA_SetBrightness (1, 2); PA_SetBrightness (0, 2); PA_EasyBgLoad(0, 3, fondo); PA_EasyBgLoad(0, 1, nubes); PA_EasyBgLoad(1, 1, dialogos); PA_EasyBgLoad(1, 3, dialogos2); PA_EasyBgLoad(0, 2, fondo25); PA_SetTextCol(1, 0, 0, 0); s32 nubesX= 0; s32 nubesY= 0; s32 fondoX= 0; s32 fondoY= 0; s32 fondo25X= 0; s32 fondo25Y= 0; s32 speed= 0; s32 corazones=10; s32 flores=5; while (1) { if(!Pad.Held.Down && !Pad.Held.X && !Pad.Held.A) x += (Pad.Held.Right-Pad.Held.Left) *speed; PA_OutputText(1,5,21,"%d", corazones); PA_OutputText(1,26,21,"%d",flores); if (PA_SpriteTouched(1)) { PA_OutputSimpleText (1, 4, 6, " Boo dice:\nBooersion alpha v.2.\n\n Mario dice:\nPuff...\nQue lentitud..."); PA_StartSpriteAnim(0,1,4,7,8); PA_PlaySimpleSound(escape); } if(Pad.Held.B) speed=2; else speed=1; PA_EasyBgScrollXY(0, 1, nubesX, nubesY); PA_EasyBgScrollXY (0, 3, fondoX, fondoY); PA_EasyBgScrollXY(0, 2, fondo25X, fondo25Y); if(Pad.Newpress.Right) { PA_StartSpriteAnim(0, 0, 0, 3, 8); PA_SetSpriteHflip(0, 0, 0); } if(Pad.Newpress.Left) { PA_StartSpriteAnim(0, 0, 0, 3, 8); PA_SetSpriteHflip(0, 0, 1); } if ((Pad.Newpress.A) && (vy == 0)){ // Si presionamos el botón A y no está saltando ya. vy = -1000; // Empieza el salto } if(Pad.Newpress.Down) { PA_StartSpriteAnim(0,0,19,19,8); } if(Pad.Newpress.X) { PA_StartSpriteAnimEx(0, 0, 6, 18, 10, ANIM_UPDOWN, 1); } nubesX += 1; vy += GRAVITY; y += vy; if (y >= (192-87)<<8) { y = (192-87)<<8; vy = 0; } if (vy != 0) PA_SetSpriteAnim(0, 0, 4); // Si está subiendo o bajando, el sprite está en pleno salto. else if(!((Pad.Held.Left)||(Pad.Held.Down)||(Pad.Held.Right)||(Pad.Held.X))) PA_SetSpriteAnimFrame(0,0,0); PA_SetSpriteXY(0, 0, x>>8, y>>8); PA_WaitForVBL(); PA_CheckLid(); } return 0; } // End of main()
Espero que me podais ayudar.
Gracias.
Gracias
Gracias, ya lo solucione.
Aunque no era eso solo, sino que habia puesto x<<8 abajo y no en unas lineas mas arriba¬¬
Bueno, gracias ;)
Street Fighter X Tekken Mobile CMV 2