[SDL]Powtarzanie klawiszy podczas poruszania sie postaci
Ostatnio zmodyfikowano 2011-01-26 20:32
ThudPoland |
» 2011-01-24 21:43:43 Wybacz, pomyliłem kod - ten kod co był wcześniej był po prostu jego rozwinięciem (tego co teraz będzie) (instrukcjami wykonywanymi jeżeli warunek będzie spełniony, a warunkiem jakby nie było jest coś powiązanego z SDL_Pressed). SDL_PRESSED (jak i SDL_RELEASED) wykorzystuje się jako wartość jednego z pól z pól klasy SDL_Event. if( Event.button.state == SDL_PRESSED ) { }
|
|
Savail Temat założony przez niniejszego użytkownika |
» 2011-01-24 21:57:41 aha no nie wiedzialem nawet o takich polach w event :P(jakos nazw nigdzie sie nie doszukalem)... A czy te twoje operacje ze zdarzeniami sa poprzedzone przez SDL_PollEvent lub SDL_PumpEvents()? |
|
ThudPoland |
» 2011-01-24 22:11:21 Przynajmniej ja używam w swoim kodzie tego pierwszego. |
|
ThudPoland |
» 2011-01-24 22:13:39 while( SDL_PollEvent( & Event ) ) { if( Event.button.state == SDL_PRESSED ) { } } Ehh... kurcze, sorry za double posta. No ale niech zostanie. |
|
Savail Temat założony przez niniejszego użytkownika |
» 2011-01-24 22:21:37 hmm sam juz nie wiem ;/. Ja w swojej grze uzywam zarowno SDL jak i Opengl, moze to tez jakies problemy tworzy... W kazdym razie mam glowna petle obslugujaca eventy w ktorej nie moge jednak zawrzec tych operacji ruchu postaci i dlatego tworze drugai zastanwiam sie czy mozna uzywac 2 razy SDL_PollEvent. Nawet utworzylem publiczna zmienna SDL_Event i ta jedna zmienna jest uzywana w 2 petlach ale nadal mi nie wychodzi a kod po przerobkach wyglada tak: size_t last_ticks = SDL_GetTicks(); bool run = false; bool run_start = false;
if( key[ SDLK_RIGHT ] && SDL_PollEvent( & object_laduj3.event ) ) { size_t ticks = SDL_GetTicks(); double delta_time =( ticks - last_ticks ) / 1000.0; if( delta_time > 1 ) { last_ticks = ticks; if( key[ SDLK_RIGHT ] && object_laduj3.event.button.state == SDL_RELEASED ) { run = true; } if( key[ SDLK_RIGHT ] && object_laduj3.event.button.state == SDL_PRESSED && run == true ) { run_start = true; } if( object_laduj3.event.button.state == SDL_RELEASED ) run_start = false; } if( run_start == false ) Walk(); else if( run_start == true ) Run(); }
Tym razem postac w ogole nawet w prawo sie nie porusza... Ze tez tyle problemow z powtorzeniem jednego klawisza ;/ |
|
ThudPoland |
» 2011-01-24 22:24:54 |
|
Savail Temat założony przez niniejszego użytkownika |
» 2011-01-24 22:30:46 gdy jest w petli rezultat taki sam, dobra dzieki za czas, napewno sie sporo dowiedzialem ale nad tym problemem bedzie trzeba chyba dluzej posiedziec ;/ |
|
ThudPoland |
» 2011-01-24 22:31:52 Możesz mi dać cały kod? Pokombinuję coś i dam znać, wytłumaczę (jeżeli mi się uda) co jest nie tak. Napisz na GG: 24228421. Później postaram się wytłumaczyć całość wszystkim użytkownikom.
A GG może wziąść sobie każdy. |
|
1 « 2 » 3 |