Я создаю игру и пытаюсь определить обнаружение столкновений. Я получил четыре класса на данный момент. Игра, Игрок, Снаряд и Враг. Поэтому, если я стреляю с помощью игрока или врага, я создаю новый снаряд и emlace_back()
превращаю его в вектор. Все мои враги также хранятся внутри вектора. Все тезисы Объекты созданы с новыми. Таким образом, мои обнаружения столкновений выглядят так:
void Game::CheckHit() {
auto enemy = m_Enemys.begin();
auto projectile = m_Projectiles.begin();
while(projectile != m_Projectiles.end()){
if (//Hit Detected with player) {
delete (*projectile);
m_Projectiles.erase(projectile);
m_Player->PlayerHit();
}
while (enemy != m_Enemys.end()) {
if (//Hit Detected with enemy) {
delete (*enemy);
delete (*projectile);
m_Projectiles.erase(projectile);
m_Enemys.erase(enemy);
m_Player->BulletHit();
} else
enemy++;
}
}
}
Проблема, с которой я столкнулся, заключается в том, что я на самом деле не знаю, когда мне следует увеличивать итератор снаряда, потому что мне нужно делать это только в том случае, если ни игрок, ни Enemys не получили его с помощью что специфицирует c снаряд. Любая помощь приветствуется.