[SFML] Movimientos de Texturas

Iniciado por DeMoNcRaZy, 21 Junio 2015, 18:58 PM

0 Miembros y 1 Visitante están viendo este tema.

DeMoNcRaZy

Buenas,

Tengo un pequeño problema con el movimiento de texturas, la textura se mueve bien, pero no su velocidad, solo pulsando una vez la tecla da un gran salto en vez de pequeño.

Aquí imagen del problema:

Ejecuto el programa y sale así bien:


Pulso una vez la flecha hacia abajo:


Aparece muy lejos cada paso, en vez de ser algo así:


El código:

Código (cpp) [Seleccionar]
#include <SFML/Graphics.hpp>

int main(){
    //Crea la ventana de 300x300
    sf::RenderWindow window(sf::VideoMode(300, 300), "Ventana SFML");

    //Creamos una textura en este caso un tom
    sf::Texture tom;
    //Cargamos la textura de un archivo
    if(!tom.loadFromFile("tom.png")){
        //Si hay un error salimos
        return EXIT_FAILURE;
    }

    sf::Sprite sprite;
    sprite.setTexture(tom);
    sprite.setTextureRect(sf::IntRect(0, 0, 32, 32));

    //Si la ventana esta abierta
    while(window.isOpen()){
        //Creamos un evento llamado ventana
        sf::Event ventana;
        //Llamamos al evento ventana
        while(window.pollEvent(ventana)){
            //Se cierra la ventana cuando lo pedimos
            if(ventana.type == sf::Event::Closed){
            //Cerramos la ventana
                window.close();
            }
        }

        //Movemos arriba
        if(sf::Keyboard::isKeyPressed(sf::Keyboard::Up)){
            sprite.move(0, -1);
        }
        //Movemos abajo
        if(sf::Keyboard::isKeyPressed(sf::Keyboard::Down)){
            sprite.move(0, 1);
        }
        //Movemos a la izquierda
        if(sf::Keyboard::isKeyPressed(sf::Keyboard::Left)){
            sprite.move(-1, 0);
        }
        //Movemos a la derecha
        if(sf::Keyboard::isKeyPressed(sf::Keyboard::Right)){
            sprite.move(1, 0);
        }

        //Limpiamos la ventana
        window.clear();

        //Dibujamos
        window.draw(sprite);
        //Actualizamos la ventana
        window.display();
    }


    return 0;
}


Estuve probando diferentes maneras que encontré pero ninguna logré adaptar, si supieran guiarme un poco lo agradecería.

Gracias.


Saludos!
Esta página web no está disponible - Google Chrome

BlackZeroX

Si en lugar de 1 pones fracciones de numeros?... como 0.1, claro si admite números reales.

Dulces Lunas!¡.
The Dark Shadow is my passion.

DeMoNcRaZy

Gracias por la respuesta, lo he probado y sirve correctamente.
También he encontrado una función para limitar los fotogramas y así también
tener una movilidad estable.

Código (cpp) [Seleccionar]
window.setFramerateLimit(50);

Gracias por la respuesta.

Tema resuelto.

Saludos.
Esta página web no está disponible - Google Chrome