16
Graphics / Re: Erase only one rectangleShape
« on: July 22, 2022, 12:00:47 pm »
The remove thing dont work i try this, but still booth doors gone,
RectangleShape door;
std::vector<RectangleShape> doors(3);
std::vector<RectangleShape>::iterator it;
...
while (window.isOpen())
{
sf::Event event;
while (window.pollEvent(event));
...
for (int j = 0; j < doors.size(); j++){
doors[j].setFillColor(Color::Cyan);
doors[1].setSize(Vector2f(100, 100));
doors[1].setPosition(Vector2f(650, 1000));
doors[2].setSize(Vector2f(100, 100));
doors[2].setPosition(Vector2f(650, 700));
}
for (auto& door: doors){
FloatRect playerBounds = player.getGlobalBounds();
FloatRect doorBounds = door.getGlobalBounds();
for ( auto it = doors.begin(); it != doors.end();)
{
if(doorBounds. intersects(playerBounds)) {
it = doors.erase(it);
}
else
{
++it;
}
window.draw(doors[1]);
window.draw(doors[2]);
}
}
RectangleShape door;
std::vector<RectangleShape> doors(3);
std::vector<RectangleShape>::iterator it;
...
while (window.isOpen())
{
sf::Event event;
while (window.pollEvent(event));
...
for (int j = 0; j < doors.size(); j++){
doors[j].setFillColor(Color::Cyan);
doors[1].setSize(Vector2f(100, 100));
doors[1].setPosition(Vector2f(650, 1000));
doors[2].setSize(Vector2f(100, 100));
doors[2].setPosition(Vector2f(650, 700));
}
for (auto& door: doors){
FloatRect playerBounds = player.getGlobalBounds();
FloatRect doorBounds = door.getGlobalBounds();
for ( auto it = doors.begin(); it != doors.end();)
{
if(doorBounds. intersects(playerBounds)) {
it = doors.erase(it);
}
else
{
++it;
}
window.draw(doors[1]);
window.draw(doors[2]);
}
}