Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[SFML 2.0] Ruch postaci

Ostatnio zmodyfikowano 2013-05-16 18:29
Autor Wiadomość
ShayQ
Temat założony przez niniejszego użytkownika
[SFML 2.0] Ruch postaci
» 2013-04-30 14:54:50
Witajcie! Mam problem z płynnym poruszaniem wczytanego sprite'a. Od wczoraj szukałem w sieci rozwiązania mojego problemu i nie znalazłem -.-. Dokładnie chodzi o to, że używam tego przykładu
C/C++
if( sf::Keyboard::isKeyPressed( sf::Keyboard::D ) )
{
    move right...
}

Ale np. kiedy nacisnę i trzymam D to sprite ruszy się o pixel na ułamek sekundy zatrzyma się a, potem jest w ciągłym ruchu.
Tak samo jak gdziekolwiek przytrzyma się jakąś literę na klawiaturze to pojawi się jedna literka a reszta zacznie pojawiać się po krótkiej chwili. Próbowałem przykładów z "IsKeyDown" ale nawet mi tego nie kompiluje... HELP!
P-81589
akwes
» 2013-04-30 14:58:00
Bo tak działa kontrolowanie wysyłanych sygnałów od klawiatury przez system. Otwórz sobie edytor tekstu i wciśnij "A". "a" się pojawi a dopiero po chwili zacznie pisać się wiele razy. Opcję tę każdy może sobie skonfigurować w systemie. Powinieneś użyć http://www.sfml-dev.org/documentation/2.0/classsf_1_1Keyboard.php jeżeli chcesz bez tej "przerwy".
P-81590
ShayQ
Temat założony przez niniejszego użytkownika
» 2013-04-30 15:10:26
Nie rozumiem :D
C/C++
#include <SFML/Graphics.hpp>

int main()
{
    sf::RenderWindow oknoAplikacji( sf::VideoMode( 300, 300, 32 ), "X" );
   
    sf::Texture tekstura;
    tekstura.loadFromFile( "heroD.png" );
   
    sf::Sprite obrazek;
    obrazek.setTexture( tekstura );
   
    while( oknoAplikacji.isOpen() )
    {
        sf::Event zdarzenie;
        while( oknoAplikacji.pollEvent( zdarzenie ) )
        {
            if( sf::Keyboard::isKeyPressed( sf::Keyboard::Escape ) )
                 oknoAplikacji.close();
           
            if( sf::Keyboard::isKeyPressed( sf::Keyboard::D ) )
                 obrazek.move( 1, 0 );
           
           
        }
        oknoAplikacji.clear();
        oknoAplikacji.draw( obrazek );
        oknoAplikacji.display();
    }
    return 0;
}

Co tutaj jest nie tak? I co muszę zmienić? Bo nie mam siły do tego... Sam się pogrążam, że zatrzymałem się na takim momencie ^^
P-81591
polkom21
» 2013-04-30 15:21:49
sf::Event zdarzenie;
 poza główną pętlę gry.
P-81593
pekfos
» 2013-04-30 15:25:16
sf::Event zdarzenie;
 poza główną pętlę gry.
Jakie to ma znaczenie?
P-81596
Apus
» 2013-04-30 15:27:10
sf::Event zdarzenie;
 poza główną pętlę gry.
Bzdura. Nawet w którymś oficjalnym tutorialu SFML jest tak zrobione.

Do autora tematu: zachowanie programu które opisałeś występuje gdy używasz sf::Event, żeby go uniknąć użyj sf::Keyboard.
P-81598
ShayQ
Temat założony przez niniejszego użytkownika
» 2013-04-30 15:27:12
To nie naprawiło mojego problemu. Dodam jeszcze, że sprite rusza się płynnie kiedy jeżdżę sobie myszką po oknie xD Wtedy sprite nie robi tej przerwy.

Dzięki @Apus zaraz sprawdzę.
P-81599
pekfos
» 2013-04-30 15:30:06
Wywal
C/C++
if( sf::Keyboard::isKeyPressed( sf::Keyboard::D ) )
     obrazek.move( 1, 0 );
poza pętlę obsługi komunikatów.
P-81601
« 1 » 2
  Strona 1 z 2 Następna strona