Tworzę grę, w której jesteśmy statkiem kosmicznym potrafiącym strzelać (w kodzie: kula). Potwory idą z góry na dół i my musimy je zestrzelić by nas nie zabiły. A teraz problem: gdzie mam błąd? kod:
wykrycie kolizji:
if (potwory.size()!=0) //potwory - wektor z przeciwnikami { for (int i=0; i<potwory.size(); i++) // sprawdzenie z kolei kolizji ze wszystkimi potworami { if (kula.getGlobalBounds().intersects(potwory[i].getGlobalBounds()) && potwory.size() <= 5) // wykrycie kolizji { potwory.erase(potwory.begin() + (i)); //usunięcie z wektora wykrytego trafionego potwora std::cout<<"potwory: "<<potwory.size()<<std::endl; //test..... } } }
rysowanie:
for (std::size_t i = 0; i<potwory.size(); i++) { okno.draw(potwory[i]); potwory[i].move(0,0.07f); //ruch potworów if (potwory[i].getPosition().y >= height) //height to wysokość; czyli gdy wyjdą poza mapę { potwory.erase(potwory.begin(), potwory.begin() + 1); //usunięcie owego potwora std::cout<<"potwory: "<<potwory.size()<<std::endl; //test...... } }
A teraz: kolizja nie jest nawet wykrywana. Oprócz 1 wyjątku. Gdy wygeneruje kulę gdy potwór wleci w mojego bohatera (jeszcze nie wprowadziłem porażki), czyli wygenerujemy kulę W ŚRODKU potwora, to działa tak, jak działać powinno. Proszę o pomoc.