Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[Allegro] Mapa kafelkowa - problem z kolizją.

Ostatnio zmodyfikowano 2011-12-29 13:27
Autor Wiadomość
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.
P-46477
m4tx
» 2011-12-28 15:42:25
1. Kod wstawiaj w [cpp][/cpp]
2. Nie podałeś problemu, jaki masz :)
P-46479
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 ?
P-46481
Winner
» 2011-12-28 16:22:50
P-46492
Aclber
Temat założony przez niniejszego użytkownika
» 2011-12-28 16:25:55
P-46493
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:

C/C++
if( map[ mappoz_x / 32 ][ mappoz_y / 32 ] == 1 ) //...

//a jesli masz ludzika na srodku ekranu to:

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:
C/C++
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;
   
}
P-46496
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.
P-46497
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
C/C++
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.
P-46559
« 1 » 2 3
  Strona 1 z 3 Następna strona