[Allegro, C++] Problem z kolizją
Ostatnio zmodyfikowano 2011-12-25 15:05
Winner Temat założony przez niniejszego użytkownika |
» 2011-12-23 17:04:34 A może powiesz mi jak to sprawdzić? Mam dodawać do zmiennej mapa_y + 2 a nie mapa_y +1?? |
|
pekfos |
» 2011-12-23 17:07:00 przed ruchem w prawo sprawdź czy przypadkiem po wykonaniu ruchu nie znajdziesz się w jakimś obiekcie. if( wprawo && !kolizja( x + 1, y ) ) ++x;
|
|
Winner Temat założony przez niniejszego użytkownika |
» 2011-12-23 17:13:34 No kurde nie rozumiem ;D Nie wiem, może za długo nad tym siedziałem... Bo teraz nie mam pojęcia jak tego użyć... A próbowałem też tak: x = floor(mario_x/50 +1); y = floor(mario_y/50 +1); int RodzajTerenu = map[ mapa_y+y][ mapa_x+x]; int RodzajTerenuBok = map[mapa_y+y][mapa_x+x];
if(key[KEY_RIGHT] && RodzajTerenu > 0 && RodzajTerenuBok == 0) { mapa_x++; }
Ale po dotknięciu podłogi i tak się nie mogę ruszyć. PS: Może ma ktoś taką grę z uzyciem kolizji na mapie kafelkowej? Zobaczyłbym sobie jak jest rozwiązany mój problem... |
|
pekfos |
» 2011-12-23 17:26:21 Użyj kartki w kratkę i rozpisz sobie wszystkie przypadki kolizji. |
|
Winner Temat założony przez niniejszego użytkownika |
» 2011-12-23 20:52:44 Okey, teraz mam takie coś: y = floor(mario_y/50); x = floor(mario_x/50); int RodzajTerenu = map[ mapa_y+y+1][ mapa_x+x]; int RodzajTerenuBok = map[mapa_y+y][mapa_x+x+1]; if(key[KEY_RIGHT]&& RodzajTerenuBok == 0) { mapa_x++; } I to działa PRAWIE dobrze. Gdzy opadam na podłogę mogę się juz ruszać, gdy przed moim ludkiem jest przeszkoda to się on zatrzymuję. Lecz jest jeden poważny problem :( Ludek przechodzi przez przeszkodę ale u góry. Znaczy jak juz trochę bitmapy ludka wyjdzie ponad górną krawędź przeszkody to może on się ruszyć w prawo i wygląda to niezbyt dobrze...Wygląda to tak jakby ludek u góry przechodził przez przeszkodę...(ale tylko u góry) Proszę o pomoc. |
|
pekfos |
» 2011-12-23 21:00:17 Znaczy że ludek jest wyższy od kafla? No to już jest banalne.. Sprawdzaj jeszcze jeden przypadek. Kolizję z x+1, y-1 (idąc w prawo). |
|
Winner Temat założony przez niniejszego użytkownika |
» 2011-12-23 21:18:30 Niestety nie działa... Jak dam y-1 to ludek i tak przechodzi u góry przez przeszkodę, a jak dam +1 to jak opadne na podloge to sie ruszyć nie mogę. Nie wiem czy ludek jest wyższy od kafla (ludkiem jest narazie bryła a idealnych rozmiarach moich kafli... Chodzi o to, że chyba mi odczytuje numer kafla z górnej granicy ludka... Nie wiem jak to nazwać.Jak przesunę się kawałek nad górną przeszkodę (która znajduje się przed ludkiem) to numer kafla = 0 i wtedy mogę ruszyć się w prawo i cały spód ludka przechodzi przez przeszkodę.
Jakby jeszcze było niezrozumiale to mogę to przedstawić za pomocą obrazków ;) |
|
SeaMonster131 |
» 2011-12-23 21:42:01 To sprawdzaj kolizje także na prawy i lewy, dolny róg tego bohatera. |
|
1 « 2 » 3 4 |