void MyScene::bulletTest() {
std::vector<Bullet*>::iterator it = bulletVector.begin();
//auto it = std::adjacent_find(bulletVector.begin(), bulletVector.end());
while (it != bulletVector.end()) {
std::vector<Enemy*>::iterator that = enemyVector.begin();
//auto that = std::adjacent_find(enemyVector.begin(),`enter code here`enemyVector.end());
while (that != enemyVector.end()) {
if ((*it)->isCollidingWith((*that))) {
Bullet* b = (*it);
this->removeChild(b);
it = bulletVector.erase(it);
delete b;
enemyDeSpawn();
}
else
{
it++;
}
}
}
}
我正试图在我的老师的引擎构建中测试我的敌人的子弹,虽然我不能让它运行,但是当我射击我的敌人时,现场有不止一个游戏崩溃。
我会为感兴趣的人链接引擎的源代码, https://github.com/rktrlng/rt2d
答案 0 :(得分:0)
您遇到问题可能有两个原因:
您永远不会检查内循环中是否it == bulletVector.end()
,因此您不知道是否删除bulletVector
中的最后一个元素。
在内部循环中,您永远不会更新迭代器that
,因此如果您修改enemyVector
,例如enemyDeSpawn
您可以使其无效。或者至少你会有一个无限循环。