[SFML 2.0] Ruch postaci
Ostatnio zmodyfikowano 2013-05-16 18:29
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 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! |
|
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". |
|
ShayQ Temat założony przez niniejszego użytkownika |
» 2013-04-30 15:10:26 Nie rozumiem :D #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 ^^ |
|
polkom21 |
» 2013-04-30 15:21:49 sf::Event zdarzenie; poza główną pętlę gry. |
|
pekfos |
» 2013-04-30 15:25:16 sf::Event zdarzenie; poza główną pętlę gry. |
Jakie to ma znaczenie? |
|
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. |
|
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ę. |
|
pekfos |
» 2013-04-30 15:30:06 Wywal if( sf::Keyboard::isKeyPressed( sf::Keyboard::D ) ) obrazek.move( 1, 0 ); poza pętlę obsługi komunikatów. |
|
« 1 » 2 |