dmx81 Temat założony przez niniejszego użytkownika |
Pocisk zmienia kierunek lotu, mimo, ze bool zakazuje » 2010-04-23 22:46:13 class pocisk { };
pocisk * strzal = NULL; std::vector < pocisk *> pociski;
if( key[ KEY_SPACE ] ) { strzal = new pocisk( karabin.x, karabin.y ); strzal->obrazek = load_bmp( "1.bmp", default_palette ); if( strzal->x > ludek.x && strzal->ustal_kierunek == true ) strzal->kierunek =- 1; else if( karabin.x < ludek.x && strzal->ustal_kierunek == true ) strzal->kierunek = 1; strzal->ustal_kierunek = false; pociski.push_back( strzal ); } for( int i = 0; i < pociski.size(); i++ ) { pociski[ i ]->x += strzal->kierunek; if( pociski[ i ]->x > 1000 ) { delete pociski[ i ]; pociski.erase( pociski.begin() + i ); } masked_blit( pociski[ i ]->obrazek, bufor, 0, 0, pociski[ i ]->x, pociski[ i ]->y, 2, 2 ); }
ilustracja problemu: mam 2 bitmapy - ludek i karabin. jesli wcisne spacje, pojawia sie pocisk, ma leciec w prawo lub w lewo zaleznie od polozenia karabinu wzgledem ludka, zawsze w jego kierunku - to dziala w porzadku ale... dalem niszczenie obiektow jesli wyleca w prawo za ekran, w lewo jeszcze nie dalem, no i zauwazylem, ze jesli wystrzele serie w ludka po lewej stronie, seria leci w lewo, ok, znika za krawedzia ekranu, przesuwam karabin, strzelam teraz w postac, ktora mam juz po prawej stronie, leci seria w prawo - ok... ale po chwili wraca ta seria poprzednia, wystrzelona w lewo, nagle leci w prawo... albo inaczej... strzelam ogniem ciaglym zmieniajac pozycje karabinu wzgledem ludka, pociski leca albo w lewo albo w prawo, nawet te wystrzelone zmieniaja swoj kierunek jesli zmieni sie pozycja karabinu... no a ja pytam, dlaczego, skoro dalem bool ustal kierunek, ustalam kierunek i daje ze ustal kierunek false i juz nie powinien sie zmieniac kierunek - tylko dla nowo utworzonych, ktore maja ustal kierunek true, a po ustaleniu ustawione na false...nie wiem co jest grane? |
|
DejaVu |
» 2010-04-23 23:49:26 Każdy pocisk powinien mieć własny kierunek, a nie używać kierunku ludzika. Ludzik powinien służyć tylko i wyłącznie do zainicjalizowania początkowego kierunku pocisku. /edit: W skrócie poniższy wiersz Ci bruździ: pociski[ i ]->x += strzal->kierunek; Powinien on wyglądać tak: pociski[ i ]->x += pociski[ i ]->kierunek;
|
|
dmx81 Temat założony przez niniejszego użytkownika |
» 2010-04-24 00:15:12 oczywiscie taki mialem zamiar - aby kazdy pocisk mial swoj wlasny kierunek, nadawany w momencie tworzenia, ale jak widac, zle zapisalem :)
dziekuje za pokazanie mojego bledu, oczywiscie drobna glupota, a tak psuje, poprawilem jak podano - wiadomo, logiczne, ze tak wlasnie powinno byc :) dzieki za poswiecony czas, dziala jak nalezy, wiec chyba mozna zamknac? bo pewnie nikomu wiecej sie nie przyda |
|
« 1 » |