› Foros › Multiplataforma › Desarrollo
// suponemos que X e Y contienen las lecturas del stick.
// suponemos que mover_X, mover_y son las coordenadas de pantalla
X>>=8;Y>>=8; // dividimos entre 256
if(X<-32) {/* Izquierda pulsada*/ mover_x--;if(mover_x<0) mover_x=0;}
if(X>=32) {/* Derecha pulsada*/ mover_x++;if(mover_x>479) mover_x=479;}
/* para Y hacer lo mismo, pero con sus valores (puede que tenga el eje invertido) */
X>>=11;Y>>=11; // dividimos entre 2048 (de esta forma limitamos también el rango mínimo)
/* Aqui tenemos un rango maximo de -16 a +15 para X e Y (para los maximos teoricos -32768 a 32767)*/
if(X<-8) X=-8; // esto limita el rango maximo
if(X>8) X=8; // esto limita el rango maximo
if(Y<-8) Y=-8; // esto limita el rango máximo
if(Y>8) Y=8; // esto limita el rango máximo
/* Aqui tenemos que X (o Y) ==0 si está en posición central y desde -8 a +8 nos marcaría el rango analógico (a mas valor por ejemplo, mas rápido aceleras o mas fuerte frenas) */
mover_x+=X;
if(mover_x<0) mover_x=0;
if(mover_x>479) mover_x=479;
/* para Y hacer lo mismo, pero con sus valores (puede que tenga el eje invertido) */
edelpuerto escribió:Muchas gracias amigo por tu ayudaa.
Me pongo con ello y te cuento.
Te seguiré informando.
De nuevo muchas gracias.
Ya lo entendí.
TAmbien existe un evento (SDL_JOYHATMOTION) que según pone, devuelve 0,1,2,3,4,5,6,7.
o sea, up, up+down...etc ( o sea los 8 posibles), Según he leido, pero no lo he podido hacer funcionar ese evento.
¿Tambien podría ser buena opcion verdad?
Un saludo.