Anuncios Google

Problema con colisiones [Solucionado]

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()


Anuncios Google

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de best_guitar

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


Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.