[sfml] Kolizja bohatera z mapą kafelkową
Ostatnio zmodyfikowano 2015-02-21 16:05
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 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; 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 |
|
Lora |
» 2015-02-21 16:05:34 Zanim sprawdzisz kolizję rób coś takiego: sf::sprite tempSprajt = sprajt; tempSprajt.move( movement ); if( !kolizje( tempSprajt ) ) sprajt.move( movement );
a w funkcji kolizje używaj funkcji sf::Rect<T>::intersects(sf::Rect<T>). |
|
1 2 « 3 » |