Desplazamiento doble y en angulo, como ?

Started by rst, March 20, 2011, 06:19:52 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

rst

o sea, que en este caso usamos resolution para hacer el tema menos sensible ?

SplinterGU

me parece que al reves, resolution para tener mejor precision.

aunque insisto en que uses get_real_point.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Drumpi

Si lo quieres pensar de otra forma, resolution es el valor por el que se divide internamente X e Y a la hora de pintar un proceso en pantalla. Así, con resolution=100, si tu proceso está en (x=587,y=348), se dibujará en:

x=587/100=5'87---TRUNCANDO---> x=5
y=348/100=3'48---TRUNCANDO---> y=3

pero no perderás los valores que tenías antes.
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

SplinterGU

es correcto lo que dice Drumpi, pero no solo dibujar, sino tambien para collisiones, advances, y cualquier otra operacion que trabaje con las coordenadas.

no olvides que trabajan sobre 3 coordenas, X, Y y Z.

lo que no se pierde es la parte decimal.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Prg

de una forma más sencilla imagina esto:

tienes un proceso que avanza un pixel de distancia cada frame:
advance(1),
x+=cos(angle) y+=sin(angle)
o
x+=get_distx(angle,1)

si el ángulo en que avanzará es 0, 90,180, 270 o 360 el proceso avanzará un pixel en ese ángulo, pero si el ángulo es distinto de estos valores entonces intentará avanzar una fracción de un pixel en x y otra en y, sin embargo usamos enteros para avanzar, por lo tanto intentará hacer algo como esto:


ángulo 45

cos(45)=sin(45)=0.7071

por lo que el proceso intentará avanzar 0.7071 en el eje x y .7071 en el eje, sin embargo sólo puede avanzar enteros y no solo eso, sólo puede almacenar en su variable local x e y enteros, por lo que no avanzará nada nunca.

Puedes hacer el experimento y verás que si el ángulo es distinto de algún múltiplo de 90000 (o cero) el proceso no avanzará.

Con resolution igual a 10, si el proceso intenta avanzar 0.09  no avanzará nunca, pero si intenta avanzar 0.1, al cabo de 10 intentos avanzará un pixel

con resolution de 100 se puede avanzar con 0.01 (después de 100 frames).

Espero no haber cometido errores, si es así corríjanme XD.

saludos :)

en humos puedes mover la camara con los cursores. es necesario para los niveles a partir del dos :)