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

Problem z kafelkami

Ostatnio zmodyfikowano 2011-12-22 20:12
Autor Wiadomość
Winner
Temat założony przez niniejszego użytkownika
Problem z kafelkami
» 2011-12-22 17:30:50
Witam, napisałem taki kod:
C/C++
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ż
C/C++
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...
P-46093
Dark
» 2011-12-22 19:15:25
nic innego lecz tylko zły algorytm wykrywania kolizji, musisz go poprawić
P-46098
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 ?
P-46099
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".
P-46100
« 1 »
  Strona 1 z 1