Estoy haciendo el típico juego sencillito de naves y me encuentro con un problema muy extraño.
En principio la nave puede desplazarse por toda la pantalla superior, y hago el desplazamiento del sprite con la función PA_SetSpriteXY. El problema reside en que quiero limitar el movimiento de la nave al ámbito de la pantalla, para que no se salga fuera. Lo tengo así:
if(posicion_nave_y>0) posicion_nave_y-=velocidad_nave*(Pad.Held.Up-Pad.Held.Down);
if(posicion_nave_y<164) posicion_nave_y+=velocidad_nave*(Pad.Held.Down-Pad.Held.Up);
if(posicion_nave_x>0) posicion_nave_x-=velocidad_nave*(Pad.Held.Left-Pad.Held.Right);
if(posicion_nave_x<223) posicion_nave_x+=velocidad_nave*(Pad.Held.Right-Pad.Held.Left);
PA_SetSpriteXY(1,0,posicion_nave_x,posicion_nave_y);
En principio, cuando posicion_nave_x y posicion_nave_y alcanzan los límites, debería dejar de aumentarlos; sin embargo no es así, sino que sigue aumentando / disminuyéndolos indefinidamente si se pulsa la tecla adecuada.
Ésto no es todo: el aumento / disminución de ambas variables no se realiza de forma constante, sino que a veces da saltos y aumenta 100 píxeles de repente. ¿Alguien sabe a qué puede deberse éste error?
EDITADO: Solucionado. El problema era que al haber puesto la resta, considero el mismo movimiento 2 veces para cada dirección.