Problem z kafelkami
Ostatnio zmodyfikowano 2011-12-22 20:12
Winner Temat założony przez niniejszego użytkownika |
Problem z kafelkami » 2011-12-22 17:30:50 Witam, napisałem taki kod: x = floor( mario_x / 50 ); y = floor( mario_y / 50 ); y + 1; int RodzajTerenu = map[ mapa_y + y / 1 ][ mapa_x + x + 1 / 1 ]; Działa on prawie dobrze, gdyż wykrywa kolizje i zatrzymuje ludka. Dałem też if( RodzajTerenu == 0 ) { mario_y++; } I działa to dobrze, ludek zatrzymuje się przed podłogą. Ale gdy ludek juz dotyka podłogi i ruszam nim w prawo i na jego drodze stoi przeszkoda to przechodzi przez nią... Może przedstwie to za pomocą rysunku: Potem ludek opada i zatrzymuje się przed podlogą: Gdzy chce przejść przez przeszkodę (u góry) to nie nie mogę: Po środku majej przeszkody też nie mogę przejść na drugą stronę. Dopiero na samym dolę(gdy ludek zatrzymuję sie na podlodze) to mogę przejść przez przeszkodę. Wiem, że spowodowane to jest tym, że w kodzie daje "+1" i wszystkie kafelki w kolizji są wyżej aby ludek zatrzymał się na podlodze a nie "w niej" I teraz pytanie: Co muszę zmienić aby ludek zatrzymywał się na podłodze ale żeby też nie przechodził na dole przez przeszkody?? EDIT: NIe wiem czemy zdjęcia się nie otworzyły... |
|
Dark |
» 2011-12-22 19:15:25 nic innego lecz tylko zły algorytm wykrywania kolizji, musisz go poprawić |
|
hincu |
» 2011-12-22 19:29:31 nie rozumiem troche tego int RodzajTerenu = map[ mapa_y + y / 1 ][ mapa_x + x + 1 / 1 ];
po co dzielisz przez 1 skoro wynik bedzie taki jak mapa_y+y oraz mapa_x+x ? |
|
Winner Temat założony przez niniejszego użytkownika |
» 2011-12-22 20:12:26 @hincu http://cpp0x.pl/forum/temat/?id=5803&p=2 Jak nie podzielę przez 1 to i tak wyjdzie to samo...
@Dark Jeżeli według Ciebie jest zły to powiedz jakiego mam użyć?
Kolizja działa dobrze (nie mogę przejść przez przeszkodę nawet na dole) ale ludek zatrzymuje się dopiero "w podlodze". |
|
« 1 » |