Bueno, al grano xD
Estoy haciendo una prueba con colisiones, pero lo raro esque no me va, a pesar de que en otras pruebas donde si uso colisiones si que van...
Código:
// Includes #include <PA9.h> // Include for PA_Lib #include "gfx/all_gfx.c" #include "gfx/all_gfx.h" s32 a2x=256<<8; s32 a2y=(135-31+17)<<8; s32 a1x=10<<8; s32 a1y=(135-31)<<8; s8 prueba=0; // Function: main() int main(int argc, char ** argv) { PA_Init(); // Initializes PA_Lib PA_InitVBL(); // Initializes a standard VBL PA_InitText(1,0); PA_InitText(0,0); PA_SetTextCol(1,31,0,0); PA_LoadSpritePal(0,0,(void*)jugador_Pal); PA_LoadSpritePal(0,1,(void*)enemigo_Pal); PA_CreateSprite(0,0,(void*)jugador_Sprite,OBJ_SIZE_32X32,1,0,a1x>>8,a1y>>8); PA_CreateSprite(0,1,(void*)enemigo_Sprite,OBJ_SIZE_16X8,1,1,a2x>>8,a2y>>8); PA_StartSpriteAnim(0,0,2,3,8); PA_StartSpriteAnim(0,1,0,1,12); // Infinite loop to keep the program running while (1) { PA_OutputText(0,0,0,"%d",prueba); PA_SetSpriteXY(0,0,a1x>>8,a1y>>8); PA_SetSpriteXY(0,1,a2x>>8,a2y>>8); a2x-=192; a1x+=192; if((((a1x>>8)<=((a2x>>8)+16) && (a1x>>8)>=(a2x>>8)) || (((a1x>>8)+32)<=((a2x>>8)+16) && ((a1x>>8)+32)>=(a2x>>8))) && (((a1y>>8)<=((a2y>>8)+8) && (a1y>>8)>=(a2y>>8)) || (((a1y>>8)+32)<=((a2y>>8)+8) && ((a1y>>8)+32)>=(a2y>>8)))){ PA_OutputSimpleText(1,0,0,"safasfcasvcwetergibkasjdanskjaskasjbfigfiwufbkwjdnbaksn"); prueba=1; } PA_WaitForVBL(); } return 0; } // End of main()
Si alguien encuentra el error, le agradeceria que lo comentara.
Gracias adelantadas.
EDITO: ya esta solucionado, gracias a la idea del test de best_guitar. Dejo el codigo, por si a alguien le interesa:
// Includes #include <PA9.h> // Include for PA_Lib #include "gfx/all_gfx.c" #include "gfx/all_gfx.h" s32 a2x=256<<8; s32 a2y=(135-31+17)<<8; s32 a1x=10<<8; s32 a1y=(135-31)<<8; s8 prueba=0; // Function: main() int main(int argc, char ** argv) { PA_Init(); // Initializes PA_Lib PA_InitVBL(); // Initializes a standard VBL PA_InitText(1,0); PA_InitText(0,0); PA_SetTextCol(1,31,0,0); PA_LoadSpritePal(0,0,(void*)jugador_Pal); PA_LoadSpritePal(0,1,(void*)enemigo_Pal); PA_CreateSprite(0,0,(void*)jugador_Sprite,OBJ_SIZE_32X32,1,0,a1x>>8,a1y>>8); PA_CreateSprite(0,1,(void*)enemigo_Sprite,OBJ_SIZE_16X8,1,1,a2x>>8,a2y>>8); PA_StartSpriteAnim(0,0,2,3,8); PA_StartSpriteAnim(0,1,0,1,12); // Infinite loop to keep the program running while (1) { PA_OutputText(0,0,1,"%d",(a1x>>8)); PA_OutputText(0,5,1,"%d",(a1y>>8)); PA_OutputText(0,10,1,"%d",(a2x>>8)); PA_OutputText(0,15,1,"%d",(a2y>>8)); PA_OutputText(0,0,3,"%d",(a1x>>8)<=((a2x>>8)+16)); PA_OutputText(0,0,4,"%d",((a1x>>8)+32)>=(a2x>>8)); PA_OutputText(0,0,5,"%d",((a1x>>8)+32)>=((a2x>>8)+16)); PA_OutputText(0,0,6,"%d",(a1x>>8)<=((a2x>>8)+16)); PA_OutputText(0,0,7,"%d",(a1y>>8)<=((a2y>>8)+8)); PA_OutputText(0,0,8,"%d",((a1y>>8)+32)>=(a2y>>8)); PA_OutputText(0,0,9,"%d",(a1y>>8)<=((a2y>>8)+8)); PA_OutputText(0,0,10,"%d",((a1y>>8)+32)>=(a2y>>8)); PA_SetSpriteXY(0,0,a1x>>8,a1y>>8); PA_SetSpriteXY(0,1,a2x>>8,a2y>>8); a2x-=192; a1x+=(Pad.Held.Right-Pad.Held.Left)*192; a1y+=(Pad.Held.Down-Pad.Held.Up)*192; if((((a1x>>8)<=((a2x>>8)+16) && ((a1x>>8)+32)>=(a2x>>8)) || (((a1x>>8)+32)>=((a2x>>8)+16) && (a1x>>8)<=((a2x>>8)+16))) && (((a1y>>8)<=((a2y>>8)+8) && ((a1y>>8)+32)>=(a2y>>8)) || ((a1y>>8)<=((a2y>>8)+8) && ((a1y>>8)+32)>=(a2y>>8)))){ PA_OutputSimpleText(1,0,0,"safasfcasvcwetergibkasjdanskjaskasjbfigfiwufbkwjdnbaksn"); prueba=1; } else PA_OutputSimpleText(1,0,0,"ownflaskfnjclasfhhdiaskasfbaksjfbaknjcakcksjbnkasckamcna"); PA_WaitForVBL(); } return 0; } // End of main()
hey Draco, como va la
hey Draco, como va la vida!
Te recomendaria que hicieras un test de cada expresion del if de la colision.
PA_OutputText(0,0,1,"%d",(a1x>>8));PA_OutputText(0,0,2,"%d",((a2x>>8)+16));
PA_OutputText(0,0,3,"%d",(a1x>>8)<=((a2x>>8)+16));
etc...
y a ver que te falla...
Saludos
Visita mi blog. Zenit + 5 will win