[Allegro] Mapa kafelkowa - problem z kolizją.
Ostatnio zmodyfikowano 2011-12-29 13:27
RazzorFlame |
» 2011-12-29 12:15:29 Alcber, sorry za tamten post, jesli chcesz to zrobić to tak jak mowilem. if( map[ poz_ludka_x / 32 ][ poz_ludka_y / 32 ] == 1 )
/\ ten if oblicza pozycje ludka wzgledem mapy. Jesli chcesz zeby nie mogł przejść na prawo jesli jest przeszkoda to przed kazdym ruchem w prawo sprawdzaj czy nie ma tam tego kafla czy np: if( key[ KEY_RIGHT ] && map[( poz_ludka_x / 32 ) + 1 ][ poz_ludka_y / 32 ] == 0 ) { poz_ludka_x++; }
W pierwszym musisz dodać jeden. Zobacz na ten "obrazek": X = przeszkoda . = wolne pole ^ = postac ........ ........ ..^X.... ........ Musisz dodać ten jeden żeby sprawdzić czy kratke obok jest przeszkoda. Jesli na lewo to -1, Jeśli do dołu to w drugim argumencie dodać 1, jesli do gory do w drugim arg. odjąc 1 itd. EDIT: To co ty napisałes nie jest do konca dobre. Patrz: int poz_x, poz_y = 100; if( key...&& map[( poz_x / 32 ) + 1 ][ poz_y / 32 ] == 0 ) { }
Pamietaj! W pierwszym argumecie dodajesz jeden a w drugim nie![/code] |
|
Aclber Temat założony przez niniejszego użytkownika |
» 2011-12-29 12:27:14 int pozycja_y = x/32; int pozycja_x = y/32; Mam w pętli więc dobrze oblicza położenie gracza; Czyli taki kod powinien działać jak należy jednak działa niepoprawnie: if( key[ KEY_RIGHT ] &&( planszaGry.mapa[ pozycja_y ][ pozycja_x + 1 ] == 0 ) ) { x += 1; }
|
|
RazzorFlame |
» 2011-12-29 12:29:19 Alcber. Tobie sie gracz posuwa po 1 kratce czy po pixelu??
EDIT: jesli sie nie myle to w twoim kodzie wygląda na to że chcesz oblicz dolną kratke... Czekaj zaraz ci dam poprawny kod ( jeśli nie zapomniałem ). |
|
Aclber Temat założony przez niniejszego użytkownika |
» 2011-12-29 12:30:27 Po jednym pixelu, może w taki razie zrobić żeby poruszał się po 1 kratce tylko wtedy jak. Ogólnie dziwnie mi strasznie te przeszkody występują. Nie zatrzymuje się tam gdzie powinien. Mapę mam dobrze wygenerowaną bo sprawdziłem.
|
|
RazzorFlame |
» 2011-12-29 12:33:19 int poz_x, pox_y = 100;
if( key[ KEY_RIGHT ] &&( planszaGry.mapa[ pozycja_y / 32 ][( pozycja_x / 32 ) + 1 ] == 0 ) ) { x += 1; }
O ile sie nie myle, to jest dobrze. Nie dawno udało mi się zrobić poruszanie mapy tak jak np w Tibii. Niby co jedną kratke tylko że po pixelu sie posuwa. Tylko że to w SDL'u... |
|
Aclber Temat założony przez niniejszego użytkownika |
» 2011-12-29 12:35:23 int poz_x, pox_y = 100; Czemu tutaj przypisałeś 100 ? |
|
RazzorFlame |
» 2011-12-29 12:36:51 A znam twoją pozycje??? Chodzi ze tam nie dajesz poz_x = 100 / 32; Chodzi o sam przykład |
|
Aclber Temat założony przez niniejszego użytkownika |
» 2011-12-29 12:40:43 Nie rozumiem, przecież pozycja gracza zmienia się cały czas i to mam w pętli While zawarte Czy po każdym przejściu pętli mam inną pozycje gracza. Więc nie rozumiem dlaczego wstawiłeś to 100.
|
|
1 « 2 » 3 |