我正在用 SFML 2 制作一个简单的游戏,到目前为止进展顺利。我创建了两个 sf::Sprite 列表,一个用于敌人,一个用于激光。敌人在屏幕外随机生成,并在输入时创建激光。我为两个列表创建了一个碰撞循环并执行了我的代码。没有编译时和运行时错误。激光与敌人的碰撞对前 3 到 4 个敌人效果很好,但之后就不会发生碰撞。什么可能导致这个问题?请帮助我。谢谢。这是我的代码。
std::list<sf::Sprite>::iterator enemyit = enemy.begin(), next;
std::list<sf::Sprite>::iterator greenlaserit = greenlaser.begin(), reload;
while(enemyit != enemy.end())
{
next = enemyit;
next++;
while(greenlaserit != greenlaser.end())
{
reload = greenlaserit;
reload++;
if(enemyit->getGlobalBounds().intersects(greenlaserit->getGlobalBounds()))
{
enemy.erase(enemyit);
greenlaser.erase(greenlaserit);
++erased;
}
greenlaserit = reload;
}
enemyit = next;
}