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

[Allegro, C++] Problem z kolizją

Ostatnio zmodyfikowano 2011-12-25 15:05
Autor Wiadomość
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??
P-46149
pekfos
» 2011-12-23 17:07:00
przed ruchem w prawo sprawdź czy przypadkiem po wykonaniu ruchu nie znajdziesz się w jakimś obiekcie.
C/C++
if( wprawo && !kolizja( x + 1, y ) ) ++x;

P-46150
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...
P-46152
pekfos
» 2011-12-23 17:26:21
Użyj kartki w kratkę i rozpisz sobie wszystkie przypadki kolizji.
P-46154
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.
P-46178
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).
P-46182
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 ;)
P-46185
SeaMonster131
» 2011-12-23 21:42:01
To sprawdzaj kolizje także na prawy i lewy, dolny róg tego bohatera.
P-46188
1 « 2 » 3 4
Poprzednia strona Strona 2 z 4 Następna strona