Tworzę grę w c++ & sfml, w której się strzela do przeciwników. I teraz; jak usunąć konkretny trafiony obiekt? Kiedy nie wiadomo który jest z kolei w wektorze?
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 (kula-potwor)
{
potwory.erase(potwory.begin() + (i)); //usunięcie wykrytej kolizji
std::cout<<"potwory: "<<potwory.size()<<std::endl; //test sprawdzenia
}
}
}
No i narysowanie potworów:
for (std::size_t i = 0; i<potwory.size(); i++)
{
okno.draw(potwory[i]);
potwory[i].move(0,0.07f);
if (potwory[i].getPosition().y >= height) //height - wysokość ekranu
{
potwory.erase(potwory.begin(), potwory.begin() + 1);
std::cout<<"potwory: "<<potwory.size()<<std::endl; //kolejny test sprawdzenia
}
}
Problem w tym, że z trafionymi potworami nic się nie dzieje. Na pewno gdzieś mam błąd, ale nie siedzę długo w sfml :p.