私はSFML 2で簡単なゲームを作っていますが、これまでのところスムーズに進みました。敵用とレーザー用の 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;
}