kiler69 Temat założony przez niniejszego użytkownika |
[Allegro] Kolizje w skakaniu » 2009-08-17 00:03:49 Witam, piszę grę (cos typu mario) i mam problem. Gra polega na tym, ze przesuwa sie tlo, i leci animacja ruchu postaci. Na rysunku z tlem narysowalem przeszkode, ktora nalezy przeskoczyc. Do kolizji uzylem funkcji getpixel i dziala ok, tzn. moge wskoczyc na ten obiekt i z niego zejsc, ale nie wiem jak zrobic, zebym mogl skoczyc stojac na tym obiekcie. Nie wiem czy rozumiecie o co mi chodzi.. ale w tej chwili dziala tak, ze postac moze tylko zejsc z tej przeszkody jesli bede poruszal strzałką, a ja bym chcial zeby mogla stojac na "tym czyms" skoczyc. To jest czesc kodu odpowiedzialna za skakanie: if((( getpixel( bufor_ekranu, ludek_x, ludek_y + 138 ) == makecol( 128, 128, 0 ) ) || ( getpixel( bufor_ekranu, ludek_x + 104, ludek_y + 138 ) == makecol( 128, 128, 0 ) ) || ludek_y == 380 ) ) { if( key[ KEY_SPACE ] && licznik == 0 ) { if( ludek_kierunek < 4 ) ludek_kierunek += 2; skok = true; licznik += 1; play_sample( dzwiek, 255, 127, 1000, 0 ); mozna_rysowac = 1; } }
if( skok == true ) { ludek_y -= 10; mozna_rysowac = 1; } if( ludek_y <= 270 && skok == true ) { skok = false; spadanie = true; mozna_rysowac = 1; } if( spadanie == true ) { if( !(( getpixel( bufor_ekranu, ludek_x, ludek_y + 138 ) == makecol( 128, 128, 0 ) ) || ( getpixel( bufor_ekranu, ludek_x + 104, ludek_y + 138 ) == makecol( 128, 128, 0 ) ) ) ) { ludek_y += 10; } mozna_rysowac = 1; } if( ludek_y == 380 ) { if(( pozycja_tla > 930 ) ||( pozycja_tla < 1043 ) ) { ludek_y = 380; spadanie = false; licznik = 0; } else spadanie = true; } |
|
DejaVu |
» 2009-08-17 00:07:27 Twój ludek nie może skoczyć będąc na klocku ponieważ masz w warunku taki zapis: ludek_y == 380 W konsekwencji uniemożliwia on wykonanie skoku gdy ludek_y!=380. |
|
kiler69 Temat założony przez niniejszego użytkownika |
» 2009-08-17 00:25:10 Dodałem cos takiego: if(ludek_y == 380 || getpixel(bufor_ekranu,ludek_x,ludek_y+138)==makecol(128,128,0) || getpixel(bufor_ekranu,ludek_x+104,ludek_y+138)==makecol(128,128,0)) I teraz jak jestem w kolizji z tym obiektem to nie da sie skoczyc. Wczesniej juz probowalem tego rozwiazania oraz wielu innych, kombinowałem z roznymi warunkami ale nic nie daje rezultatu dlatego napisalem, bo mam nadzieje ze ktos cos poradzi ;) |
|
DejaVu |
» 2009-08-17 01:21:37 Moja rada: napisz skakanie tak, aby nie sprawdzało wogóle wysokości na której znajduje się ludek. Sprawdzaj tylko czy grunt ma pod nogami i czy na nim stoi. |
|
kiler69 Temat założony przez niniejszego użytkownika |
» 2009-08-18 19:11:46 Mozesz jakis przyklad podac, bo probowalem usunac wszystkie wartosci liczbowe i zamiast tego sprawdzalem kolor pixeli ale nie wychodzi to tak jak powinno. |
|
DejaVu |
» 2009-08-18 20:15:34 |
|
« 1 » |