[Allegro] Mapa kafelkowa - problem z kolizją.
Ostatnio zmodyfikowano 2011-12-29 13:27
Aclber Temat założony przez niniejszego użytkownika |
[Allegro] Mapa kafelkowa - problem z kolizją. » 2011-12-28 15:31:24 Witam. Mam problem z kolizją. Otóż utworzyłem mapę kafelkową: Mapa[11][21], rozmiar kafelka = 32x32; Mapa [j][i] == 0 wolne pole Mapa [j][i] == 1 przeszkoda.
Wrzucam tutaj klasę Gracz w która odpowiedzialna jest m.in za poruszaniem się gracza.
Problem: Kolizja występuje tylko w dolnym rogu przeszkody. |
|
m4tx |
» 2011-12-28 15:42:25 1. Kod wstawiaj w [cpp][/cpp] 2. Nie podałeś problemu, jaki masz :) |
|
Aclber Temat założony przez niniejszego użytkownika |
» 2011-12-28 15:47:57 Poprawione:)
Edit: Wiem,że obliczyłem tylko jeden róg kafelki ale czy to nie powinno blokować całej kafelki ?
|
|
Winner |
» 2011-12-28 16:22:50 |
|
Aclber Temat założony przez niniejszego użytkownika |
» 2011-12-28 16:25:55 |
|
RazzorFlame |
» 2011-12-28 16:40:43 Powiem tylko jedno: Ten temat był zakładany jakies 10000 razy. Chcesz zrobic aby ludzik nie mógł przejsc przez tą "kratke"? To jest jeden if: if( map[ mappoz_x / 32 ][ mappoz_y / 32 ] == 1 )
if( map[( mappoz_y + poz_x ) / 32 ][( mappoz_y + poz_y ) / 32 ] == 1 )
Edit: Przy kazdym wcisnieciu klawisza sprawdzaj czy 1 kratke w dol/gore na prawo/lewo jest przeszkoda... sam mialem problem z tym ale się uporałem. Dam ci kawełek kodu z mojego projektu: if( key[ KEY_UP ] &&( map_1[(( int ) mappozy ) +( player_y / 40 ) - 1 ][(( int ) mappozx ) +( player_x / 40 ) ] == 101 || map_1[(( int ) mappozy ) +( player_y / 40 ) - 1 ][(( int ) mappozx ) +( player_x / 40 ) ] == 100 || map_1[(( int ) mappozy ) +( player_y / 40 ) - 1 ][(( int ) mappozx ) +( player_x / 40 ) ] == 126 ) ) { pkier = UP; if( mappozy > 0 && speedmode == false ) mappozy -= 0.04; if( mappozy > 0 && speedmode == true ) mappozy -= 0.2; }
|
|
Aclber Temat założony przez niniejszego użytkownika |
» 2011-12-28 16:50:49 @Up To nie znaczy, że nie mogę założyć tematu jeśli mam problem. |
|
Aclber Temat założony przez niniejszego użytkownika |
» 2011-12-29 11:57:53 Panowie, mam problem z tą kolizją. Otóż tworzę grę która ma stałe okno ( nie przewija się) I mam takie pytanie: Wykonując ruch w prawo sprawdzam tylko lewy górny wierzchołek i lewy dolny wierzchołek przeszkody ? int pozycja_y = x/32; // pozycja gracza y int pozycja_x = y/32; // pozycja gracza x if( key[ KEY_RIGHT ] &&( planszaGry.mapa[ pozycja_y ][ pozycja_x + 1 ] == 0 ) &&( planszaGry.mapa[ pozycja_y ][ pozycja_x + 1 ] == 0 ) ) { x += 1.0; }
Możecie mi powiedzieć co nie tak jest w tej kolizji albo doradzić jak ją poprawić ? Dziękuję z góry. |
|
« 1 » 2 3 |