Foros del Web » Programación para mayores de 30 ;) » C/C++ »

[SOLUCIONADO] [SFML] Movimiento de Texturas

Estas en el tema de [SFML] Movimiento de Texturas en el foro de C/C++ en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 21/06/2015, 10:52
Avatar de Tropy  
Fecha de Ingreso: diciembre-2013
Mensajes: 62
Antigüedad: 10 años, 5 meses
Puntos: 1
[SFML] Movimiento de Texturas

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 C++:
Ver original
  1. #include <SFML/Graphics.hpp>
  2.  
  3. int main(){
  4.     //Crea la ventana de 300x300
  5.     sf::RenderWindow window(sf::VideoMode(300, 300), "Ventana SFML");
  6.  
  7.     //Creamos una textura en este caso un tom
  8.     sf::Texture tom;
  9.     //Cargamos la textura de un archivo
  10.     if(!tom.loadFromFile("tom.png")){
  11.         //Si hay un error salimos
  12.         return EXIT_FAILURE;
  13.     }
  14.  
  15.     sf::Sprite sprite;
  16.     sprite.setTexture(tom);
  17.     sprite.setTextureRect(sf::IntRect(0, 0, 32, 32));
  18.  
  19.     //Si la ventana esta abierta
  20.     while(window.isOpen()){
  21.         //Creamos un evento llamado ventana
  22.         sf::Event ventana;
  23.         //Llamamos al evento ventana
  24.         while(window.pollEvent(ventana)){
  25.             //Se cierra la ventana cuando lo pedimos
  26.             if(ventana.type == sf::Event::Closed){
  27.             //Cerramos la ventana
  28.                 window.close();
  29.             }
  30.         }
  31.  
  32.         //Movemos arriba
  33.         if(sf::Keyboard::isKeyPressed(sf::Keyboard::Up)){
  34.             sprite.move(0, -1);
  35.         }
  36.         //Movemos abajo
  37.         if(sf::Keyboard::isKeyPressed(sf::Keyboard::Down)){
  38.             sprite.move(0, 1);
  39.         }
  40.         //Movemos a la izquierda
  41.         if(sf::Keyboard::isKeyPressed(sf::Keyboard::Left)){
  42.             sprite.move(-1, 0);
  43.         }
  44.         //Movemos a la derecha
  45.         if(sf::Keyboard::isKeyPressed(sf::Keyboard::Right)){
  46.             sprite.move(1, 0);
  47.         }
  48.  
  49.         //Limpiamos la ventana
  50.         window.clear();
  51.  
  52.         //Dibujamos
  53.         window.draw(sprite);
  54.         //Actualizamos la ventana
  55.         window.display();
  56.     }
  57.  
  58.  
  59.     return 0;
  60. }

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

Gracias.


Saludos!
  #2 (permalink)  
Antiguo 21/06/2015, 11:48
 
Fecha de Ingreso: julio-2012
Mensajes: 375
Antigüedad: 11 años, 9 meses
Puntos: 28
Respuesta: [SFML] Movimiento de Texturas

Limita los fotogramas, coloca esto antes del while:

Código C++:
Ver original
  1. window.setFramerateLimit(30);
  #3 (permalink)  
Antiguo 21/06/2015, 12:32
Avatar de Tropy  
Fecha de Ingreso: diciembre-2013
Mensajes: 62
Antigüedad: 10 años, 5 meses
Puntos: 1
Respuesta: [SFML] Movimiento de Texturas

Gracias por la respuesta al parecer se ha solucionado gracias a ello.

Código C++:
Ver original
  1. window.setFramerateLimit(30);

Saludos.

Etiquetas: int, movimiento, programa, texturas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:29.