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

[Allegro] Kolizje w skakaniu

Ostatnio zmodyfikowano 2009-08-18 20:15
Autor Wiadomość
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:
C/C++
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;
   
}
P-9552
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.
P-9554
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 ;)
P-9555
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.
P-9556
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.
P-9608
DejaVu
» 2009-08-18 20:15:34
P-9610
« 1 »
  Strona 1 z 1