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

[sfml] Kolizja bohatera z mapą kafelkową

Ostatnio zmodyfikowano 2015-02-21 16:05
Autor Wiadomość
kubapoz862
» 2015-02-21 16:04:21
ostatnio to pisałem: poruszanie się po mapie kafelkowej nie jestem pewien czy to dobra praktyka ale działa,  pisałem w przypływie weny :) może ci to coś pomoże


C/C++
if( key[ KEY_RIGHT ] )
{
   
    if( !plansza[( obiekt_x + hero_w + 1 ) / kafel ][ obiekt_ySZ / kafel ] && !plansza[( obiekt_x + hero_w + 1 ) / kafel ][( obiekt_ySZ + hero_h ) / kafel ] &&
    obiekt_x < max_x - hero_w )
   
         obiekt_x += V;
   
    // oraz małe zabezpieczenie, nie wiem nawet czy potrzebne
   
    if( plansza[( obiekt_x + hero_w + 1 ) / kafel ][ obiekt_ySZ / kafel ]
    || plansza[( obiekt_x + hero_w + 1 ) / kafel ][( obiekt_ySZ + hero_h ) / kafel ] )
   
         obiekt_x -= V;
   
}


plansza - tablica planszy po której porusza sie bohater (bool)
obiekt_x oczywiście pozycja bohatera na osi x
hero_w szerokość w barach :) naszego bohatera
kafel - szerokość pojedynczego kafla budującego mape
obiekt_ySZ - wysokośc bohatera po rzutowaniu (zrobione wcześniej, jak pisalem bawilem sie zeby sprawdzić czy działa, wiec tak jest przejżyściej
V - oczywiście prędkość rucu bohatera
P-126972
Lora
» 2015-02-21 16:05:34
Zanim sprawdzisz kolizję rób coś takiego:
C/C++
sf::sprite tempSprajt = sprajt; // sprajt to sf::sprite twojego gracza;
tempSprajt.move( movement );
if( !kolizje( tempSprajt ) )
     sprajt.move( movement );


a w funkcji kolizje używaj funkcji sf::Rect<T>::intersects(sf::Rect<T>).
P-126973
1 2 « 3 »
Poprzednia strona Strona 3 z 3