Usando floats en el movimiento

Started by HenBanKeN, June 18, 2011, 06:53:40 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

HenBanKeN

De nuevo yo molestando  ;D

Resulta que tengo que mover mi personaje por una pantalla de 640x480. La cantidad de pixeles por frame que se mueve el personaje estaba dada por un entero "velocidad", que puede ser diferente para cada personaje según sus power-ups, etc.

El asunto es que la velocidad estándar es 3, y me parece que la brecha entre velocidad 3 y 4, es demasiado alta. Intenté cambiarla por un float, pero me di cuenta de inmediato que a la hora de movimiento, parece que este valor se redondea, así que no me sirvió.

No se me ocurre cómo ingeniármelas :/ alguna idea?
Aún aprendiendo a manejar mis herramientas...

FreeYourMind

las posiciones en pantalla son todas int, as´que olvidate de floats y demás xD
puedes usar resolution, o colocar un valor distinto al frame, o cambiar el fps, etc.

Mr Matsusaka

El problema esta en que x e y son variables int, asique siempre redondeara cuando le añadas incrementos con floats.

Lo que puedes hacer es crear unas variables floats para designar x e y.
Por ejemplo

float fX;
float fX;

Todos los calculos de movimientos e incrementos los realizas con estas variables y al final del proceso haces

x = fX;
y = fY;

De este modo solo redondeara la posicion final de fX y fY, y no los incrementos, que los guardara siempre adecuadamente en estas variables floats

SplinterGU

para tener mas precision de movimiento tenes que usar resolution... busca resolution en el foro, ya se explico el tema varias veces, sino en la wiki seguro esta.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

oriun

Si pones resolution=10; la velocidad para recorrer 3 píxeles debería pasar a ser 30, y para recorrer 4 debería ser 40.
http://wiki.bennugd.org/index.php?title=Resolution

HenBanKeN

Muchas gracias a todos por las respuestas, creo que resolution era lo que buscaba.

Saludos!
Aún aprendiendo a manejar mis herramientas...