[SFML 2.0] Ruch myszki wpływa na ruch postaci za pomocą klawiszy.
Ostatnio zmodyfikowano 2013-08-13 23:51
Revo Temat założony przez niniejszego użytkownika |
[SFML 2.0] Ruch myszki wpływa na ruch postaci za pomocą klawiszy. » 2013-08-13 17:01:26 Witam. Jestem zmuszony zwrócić się do Panów i Pań z prośbą o pomoc, bo nie rozumiem w ogóle w czym tkwi problem. Najlepiej pokazać to na filmiku : Problem Dlaczego tak się dzieję ?? Przy poruszaniu muszka postać porusza się szybciej, niż przy braku ruchu myszki. Fragment odpowiadający za ruch postaci : sf::Event event; while( G_MAPS.window.pollEvent( event ) ) { if( event.type == sf::Event::Closed ) { G_MAPS.window.close(); } if( sf::Mouse::isButtonPressed( sf::Mouse::Left ) ) { } if( sf::Keyboard::isKeyPressed( sf::Keyboard::Up ) ) { G_MAPS.ChangePlayerPos( 0, 5 ); } if( sf::Keyboard::isKeyPressed( sf::Keyboard::Down ) ) { G_MAPS.ChangePlayerPos( 0, - 5 ); } if( sf::Keyboard::isKeyPressed( sf::Keyboard::Left ) ) { G_MAPS.ChangePlayerPos( 5, 0 ); } if( sf::Keyboard::isKeyPressed( sf::Keyboard::Right ) ) { G_MAPS.ChangePlayerPos( - 5, 0 ); } }
|
|
MrPoxipol |
» 2013-08-13 17:14:53 W tutorialu SFML była informacja, że do poruszania jakimś obiektem nie używa się zdarzenia isKeyPressed tylko samego klawisza z eventu. Dokładniej Ci nie powiem, bo piszę z telefonu. Ogólnie jest to bardzo często popełniany błąd. Co do głównego problemu to nic nam nie wiadomo o tej klasie/strukturze przechowywującej okno. |
|
pekfos |
» 2013-08-13 19:15:18 Dzieje się tak, ponieważ sprawdzasz klawisze w pętli komunikatów. Gdy poruszasz myszką, komunikatów jest więcej i pętla wykonuje więcej obiegów. |
|
Revo Temat założony przez niniejszego użytkownika |
» 2013-08-13 19:16:16 Korzystałem z tutka na oficjalnej stronie producenta, a nie z tego na niniejszej stronie :P Dziękuję za pomoc i gdyby ktoś miał taki sam problem to rozwiązaniem jest zamiast : if( sf::Keyboard::isKeyPressed( sf::Keyboard::Up ) ) { }
jest : if( event.type == sf::Event::KeyPressed && event.key.code == sf::Keyboard::Up ) { }
|
|
pekfos |
» 2013-08-13 19:21:24 To nie rozwiązanie, tylko ominięcie problemu ;) |
|
Revo Temat założony przez niniejszego użytkownika |
» 2013-08-13 23:46:21 A jak powinno wyglądać rozwiązanie problemu ?? |
|
killjoy |
» 2013-08-13 23:51:51 Na przykład, kod poruszania usunąć z pętli komunikatów i dać go do pętli głównej, najlepiej w jakimś timerze. |
|
« 1 » |