[Allegro] Podskok + mapa kafelkowa
Ostatnio zmodyfikowano 2012-11-13 23:08
wiktor16s Temat założony przez niniejszego użytkownika |
[Allegro] Podskok + mapa kafelkowa » 2012-11-13 16:17:46 Echhh. W życiu są czasem takie momenty, że trzeba zrobić coś, co jest beznadziejne, ale niezbędne albo bardzo potrzebne. Tak jest ze skokiem. Wiem że ten temat był wałkowany setki razy znajdowałem MNÓSTWO kodów, ale żaden ze znalezionych nie działał z mapą kafelkową. Chodzi mi o pomoc ze zrobieniem skoku. Chciałbym: 1 odczytać pozycje y ludka i zapisać jako poczatkowa_pozycja_ludka 2 od poczatkowa_pozycja_ludka - 30 3 ludek się WZNOSI i po osiągnięciu 30 pixeli wraca do poczatkowa_pozycja_ludka Próbowałem wieloma sposobami, jednak nic nie działało ;/ |
|
bingo009 |
» 2012-11-13 16:31:04 Można w ten sposób: bool skok = false; int poczatkowa_pozycja_ludka;
if( klawisz == space && !skok ) { poczatkowa_pozycja_ludka = pozycja_ludka; skok = true; }
if( skok && pozycja_ludka > poczatkowa_pozycja_ludka - 30 ) pozycja_ludka--;
if( skok && pozycja_ludka != poczatkowa_pozycja_ludka ) pozycja_ludka++;
if( skok && pozycja_ludka == poczatkowa_pozycja_ludka ) skok = false;
Jest to bardzo uproszczone, napewno można lepiej(np. dodać trochę fizyki, że jak skoczy to leci coraz wolniej, aż wkońcu spada coraz szybciej, w tym wypadku będzie równa prędkość). |
|
wiktor16s Temat założony przez niniejszego użytkownika |
» 2012-11-13 16:46:52 To: if( skok && stiv_y > poczatkowa_pozycja_ludka - 30 ) stiv_y--;
if( skok && stiv_y != poczatkowa_pozycja_ludka ) stiv_y++;
if( skok && stiv_y == poczatkowa_pozycja_ludka ) skok = false; ma być w pętli głównej jeszcze? czy poza? |
|
bingo009 |
» 2012-11-13 16:51:09 To ma być w pętli głównej, na końcu, za wszystkim(rysowaniem, logiką itp.). |
|
wiktor16s Temat założony przez niniejszego użytkownika |
» 2012-11-13 16:56:48 Daje to przed blitami i nie działa ;/ zmienia się wartość bool`a z 0 na 1 ale nie podskakuje ;/ |
|
bingo009 |
» 2012-11-13 17:06:52 Przepraszam, mój błąd.: bool skokwgore = false; bool skokwdol = false; int poczatkowa_pozycja_ludka;
if( klawisz == space && !skokwgore && !skokwdol ) { poczatkowa_pozycja_ludka = pozycja_ludka; skokwgore = true; }
if( skokwgore && pozycja_ludka > poczatkowa_pozycja_ludka - 30 ) pozycja_ludka--;
if( skokwgore && pozycja_ludka == poczatkowa_pozycja_ludka - 30 ) { skokwgore = false; skokwdol = true }
if( skokwdol && pozycja_ludka != poczatkowa_pozycja_ludka ) pozycja_ludka++;
if( skokwdol && pozycja_ludka == poczatkowa_pozycja_ludka ) skokwdol = false;
To jest tylko taki prymitywny przykład, aby pokazać ci jak to wygląda, powinieneś go ulepszyć. |
|
wiktor16s Temat założony przez niniejszego użytkownika |
» 2012-11-13 17:39:15 Jak dałem to, to nie działają mi kolizje z kaflami ;/
POPRAWKA: Działa, ale nie zawsze: Muszę pokombinować i pare razy "ręcznie" zmienić pozycję y i skakać jednocześnie ;/ |
|
bingo009 |
» 2012-11-13 22:15:50 To jest tylko przykład. Musisz napisać własny skok, który będzie współgrał z twoją kolizją. Ja ci dałem najgłupszy przykład. |
|
« 1 » 2 |