Problema extraño con el scroll

Me ocurre un error extraño en el scroll, quiero que el fondo se mueva con el sprite, y eso es lo que ocurre en el eje x. Pero en el eje y funciona de forma inversa (pulsas arriba y se va a abajo, pulsas abajo y se va a arriba. Curiosamente lo mismo pasa con el sprite cuando antes no pasaba)

Da igual del modo que lo ponga, siempre funciona a la inversa.

Tengo las siguientes variables para el scroll:

s32 scrollx = 0;
s32 scrolly = 0;

Y el siguiente codigo para mover el sprite/ desplazar la pantalla:

if (mouse.velocidad == 0){
mouse.velocidad++;
}

// Esto es para evitar velocidades negativas, el sprite tiene su propia velocidad se me olvido comentarlo...

if (mouse.velocidad == 10){
mouse.velocidad--;
}

// Esto es para ponerle un limite a la velocidad

mouse.velocidad += Pad.Newpress.R - Pad.Newpress.L;

// Esto es para cambiar la velocidad...

mouse.x += (Pad.Held.Right - Pad.Held.Left)*mouse.velocidad;
mouse.x += (Pad.Held.A - Pad.Held.Y)*mouse.velocidad;

// Mover el sprite en su rango x...

mouse.y += (Pad.Held.Up - Pad.Held.Down)*mouse.velocidad;
mouse.y += (Pad.Held.B - Pad.Held.X)*mouse.velocidad;

//mover el sprite en su rango y...

PA_SetSpriteXY(0,0,mouse.x,mouse.y);

// Centra el sprite en las variables anteriores que hemos modificado para asi moverlo...

scrollx += (Pad.Held.Right - Pad.Held.Left)*mouse.velocidad;
scrolly += (Pad.Held.Up - Pad.Held.Down)*mouse.velocidad;

// Lo mismo del sprite pero para el scroll, lo de la velocidad es por si el sprite va mas rapido, que el fondo tambien vaya

PA_BGScrollXY(0,2,scrollx,scrolly);

// Hago scroll usando las variables anteriores que hemos modificado...


Alguna idea?

Saludos
amchacon escribió:
PA_BGScrollXY(0,2,scroll.x,scroll.y);
Puede que sea eso?, o igual es que no lo as puesto aki

if (mouse.velocidad == 0){
mouse.velocidad++;
}

// Esto es para evitar velocidades negativas, el sprite tiene su propia velocidad se me olvido comentarlo...

if (mouse.velocidad == 10){
mouse.velocidad--;
}

// Esto es para ponerle un limite a la velocidad

mouse.velocidad += Pad.Newpress.R - Pad.Newpress.L;

// Esto es para cambiar la velocidad...

mouse.x += (Pad.Held.Right - Pad.Held.Left)*mouse.velocidad;
mouse.x += (Pad.Held.A - Pad.Held.Y)*mouse.velocidad;

// Mover el sprite en su rango x...

mouse.y += (Pad.Held.Up - Pad.Held.Down)*mouse.velocidad;
mouse.y += (Pad.Held.B - Pad.Held.X)*mouse.velocidad;

//mover el sprite en su rango y...

PA_SetSpriteXY(0,0,mouse.x,mouse.y);

// Centra el sprite en las variables anteriores que hemos modificado para asi moverlo...

scrollx += (Pad.Held.Right - Pad.Held.Left)*mouse.velocidad;
scrolly -= (Pad.Held.Up + Pad.Held.Down)*mouse.velocidad;

// Lo mismo del sprite pero para el scroll, lo de la velocidad es por si el sprite va mas rapido, que el fondo tambien vaya

PA_BGScrollXY(0,2,scrollx,scrolly);

// Hago scroll usando las variables anteriores que hemos modificado...


Joder... Pero enserio no os da para eso??? joder ke el cerebro esta para algo xDDD hay tienes recalcado el error y correguido... u.u

salu2
joe Plata, lo que me ha costado ver el recalque ese que has hecho xDDD

Lo pongo independiente para facilitárselo al pobre amcha
Plata escribió:scrolly -= (Pad.Held.Up + Pad.Held.Down)*mouse.velocidad;


Saludos
nazareth escribió:
amchacon escribió:
PA_BGScrollXY(0,2,scroll.x,scroll.y);
Puede que sea eso?, o igual es que no lo as puesto aki

Que va, con las variables del scroll no he usado estructuras sino esas variables que pongo arriba... Ademas eso me daria error al compilar (no reconoceria la variable)

Plata escribió:
Joder... Pero enserio no os da para eso??? joder ke el cerebro esta para algo xDDD hay tienes recalcado el error y correguido... u.u

salu2

Disculpeme Don perfecto, no se me habia ocurrido que era tan facil como invertir el signo XDDD

Aunque te has equivocado en una cosa, tendria que ser asi:
scrolly -= (Pad.Held.Up - Pad.Held.Down)*mouse.velocidad;



De lo contrario, el scroll nunca irá para arriba. Yya que el resultado siempre saldra negativo presione la tecla que pulses (1+0 = 0+1).

Bueno, pos gracias por ayudarme :)

keda escribió:joe Plata, lo que me ha costado ver el recalque ese que has hecho xDDD

Lo pongo independiente para facilitárselo al pobre amcha
Plata escribió:scrolly -= (Pad.Held.Up + Pad.Held.Down)*mouse.velocidad;


Saludos

+1 XDD
amchacon escribió:
Aunque te has equivocado en una cosa, tendria que ser asi:
scrolly -= (Pad.Held.Up - Pad.Held.Down)*mouse.velocidad;



De lo contrario, el scroll nunca irá para arriba. Yya que el resultado siempre saldra negativo presione la tecla que pulses (1+0 = 0+1).


Pufffff no existe facepalm para expresar lo que siento xDDDD

Haber, alma de cantaro, si haces eso, si le das arriba o abajo siempre ira hacia abajo. Tiene que ser como yo he dicho.

scrolly -= (Pad.Held.Up + Pad.Held.Down)*mouse.velocidad;



ASí SI QUE FUNCIONA xDDDDDD

salu2
Plata escribió:
amchacon escribió:
Aunque te has equivocado en una cosa, tendria que ser asi:
scrolly -= (Pad.Held.Up - Pad.Held.Down)*mouse.velocidad;



De lo contrario, el scroll nunca irá para arriba. Yya que el resultado siempre saldra negativo presione la tecla que pulses (1+0 = 0+1).


Pufffff no existe facepalm para expresar lo que siento xDDDD

Haber, alma de cantaro, si haces eso, si le das arriba o abajo siempre ira hacia abajo. Tiene que ser como yo he dicho.

scrolly -= (Pad.Held.Up + Pad.Held.Down)*mouse.velocidad;



ASí SI QUE FUNCIONA xDDDDDD

salu2


Esto... Si mantengo presionado la tecla arriba con velocidad 1:

Scrolly -= (1 - 0)*1;
Scrolly -= 1
Scrolly += -1


Disminuiria una coordenada en el eje Y. Como el eje Y empieza ARRIBA Y NO ABAJO (si te fijas, el punto 0,0 es la esquina superior izquierda y el 256,192 es la esquina inferior derecha....). Al disminuir su valor se desplazaria a su lugar de origen, la parte de ARRIBA.

Y ahora si pulsas abajo:

scrolly -= (0 - 1)*1;
scrolly -= -1
scrolly += 1


Aumenta en uno el valor de la y. Como ya he dicho que el eje de la y es inverso, ira hacia abajo....

Funciona verdad?. Pruebalo tu mismo si no me crees...

Probemos ahora con tu metodo, si pulso arriba:

scrolly -= (1 + 0)*1;
scrolly -= 1
scrolly += -1


Vale eso si funciona, si le das a arriba disminuyes el eje Y y por tanto sube...

Probemos ahora si le damos a abajo:

scrolly -= (0 + 1)*1;
scrolly -= 1
scrolly += -1


Curioso no?. Si le damos a abajo el sprite se mueve hacia arriba... Por tanto tu metodo no sirve, la razon es por lo que te he dicho. En las sumas da igual como ordenes los valores que siempre saldra el mismo resultado, por tanto aqui da igual la tecla que pulses que siempre se movera hacia el mismo sitio...

Cuidaito con los errores tontos plata [ginyo]

Saludos
amchacon escribió:Cuidaito con los errores tontos plata [ginyo]

+1 [sonrisa]

PD: Plata, no he vuelto, es que me toca hacer la matrícula de la universidad mañana y me ha tocado venir un día, pero mañana me voy. XD
AntonioND nos abandona ;_; holy crap
amchacon escribió:
Esto... Si mantengo presionado la tecla arriba con velocidad 1:

Scrolly -= (1 - 0)*1;
Scrolly -= 1
Scrolly += -1


Disminuiria una coordenada en el eje Y. Como el eje Y empieza ARRIBA Y NO ABAJO (si te fijas, el punto 0,0 es la esquina superior izquierda y el 256,192 es la esquina inferior derecha....). Al disminuir su valor se desplazaria a su lugar de origen, la parte de ARRIBA.

Y ahora si pulsas abajo:

scrolly -= (0 - 1)*1;
scrolly -= -1
scrolly += 1


Aumenta en uno el valor de la y. Como ya he dicho que el eje de la y es inverso, ira hacia abajo....

Funciona verdad?. Pruebalo tu mismo si no me crees...

Probemos ahora con tu metodo, si pulso arriba:

scrolly -= (1 + 0)*1;
scrolly -= 1
scrolly += -1


Vale eso si funciona, si le das a arriba disminuyes el eje Y y por tanto sube...

Probemos ahora si le damos a abajo:

scrolly -= (0 + 1)*1;
scrolly -= 1
scrolly += -1


Curioso no?. Si le damos a abajo el sprite se mueve hacia arriba... Por tanto tu metodo no sirve, la razon es por lo que te he dicho. En las sumas da igual como ordenes los valores que siempre saldra el mismo resultado, por tanto aqui da igual la tecla que pulses que siempre se movera hacia el mismo sitio...

Cuidaito con los errores tontos plata [ginyo]

Saludos


Plata fail xDDDD Aunque insisto en que lo he hecho asi mas de una vez y a funcionado. De todas formas luego me programo un ejemplo pa probar si es verdad (que tendras razon, no te digo que no xDD)

P.D:Antonioooooo entonces cuando vuelves tio?
9 respuestas