Estoy trasteando con las colisiones ahora que se sacar por pantalla imagenes. Queria saber como veis este codigo para hacer que cuando colisione no atraviese el objeto. El único problema que tiene al ejecutarlo es que al chocar hace como un pequeño zumbido porque al chocar lo que hago es desplazar en sentido contrario a la tecla pulsada por eso almaceno la posicion en 4 variables, la x e y para la posicion y a y b para saber hacia donde repeler cuando hace el choque sino se quedaria pegado. Se trata del ejemplo de dos circulos de 32 de diametro en el que un circulo xoca con otro estatico pero con cosas nuevas.
Alguien me puede decir una pagina donde se explique una colision de este tipo pero bien hecha sin el zumbido? O como mejorar el que he hecho.
Edito:Acabo de solucionar el problema del zumbido, el problema era el segundo setsprite() que tenia, simplemente eliminandolo esta resuelto el problema, aunque me interesan las opiniones y saber si me he complicado demasiado, que puede ser.
#include <PA9.h>
#include "gfx/all_gfx.h"
#include "gfx/all_gfx.c"
int main()
{
PA_Init();
PA_InitVBL();
PA_LoadSpritePal(0,0,(void*)esferaazul_Pal);
PA_CreateSprite(0,0,(void*)esferaazul_Sprite,OBJ_SIZE_32X32,1,0,10,10);
PA_CreateSprite(0,1,(void*)esferaazul_Sprite,OBJ_SIZE_32X32,1,0,70,60);
u32 x=0,y=0,a=0,b=0;
bool NoHayColision=true;
while (1)
{
if(NoHayColision)
{
a=0,b=0;
a = Pad.Held.Right - Pad.Held.Left;
x+=a;
b = Pad.Held.Down - Pad.Held.Up;
y+=b;
PA_SetSpriteXY(0,0,x,y);
}
else
{
x+=-a;
y+=-b;
// PA_SetSpriteXY(0,0,x,y);
}
if(PA_Distance(x,y,70,60)< 32*32) NoHayColision=false;
else NoHayColision=true;
PA_WaitForVBL();
}
return 0;
}