【发布时间】:2023-03-23 19:13:01
【问题描述】:
我正在尝试游戏开发。我尝试了一个来自教程网站的示例,如下所示:
int number = 10;
std::vector<std::unique_ptr<enemy> > enemies1;
for (unsigned i = 0; i < number; ++i) {
enemies1.emplace_back(std::unique_ptr<enemy>(new enemy(sf::Vector2f(100 * i + 1500, 1000), sf::Vector2f(15, 10), sf::Color(255, 255, 255, 0))));
}
//update
for (unsigned i = 0; i < number; ++i) {
enemies1[i]->update();
}
//render
for (unsigned i = 0; i < number; ++i) {
window.draw(enemies1[i]->enemysprite);
}
我正在使用矢量从我的敌人类别中创建多个敌人。一切都很好,我可以在屏幕上画出 10 个敌人,他们正在移动等等。但是如果我尝试像这样删除一个敌人:
if (!enemies1.empty())
{
for (unsigned i = 0; i < number; ++i) {
if (enemies1[i]->rect.getGlobalBounds().intersects(sprite.getGlobalBounds()))
enemies1.erase(enemies1.begin() + 1);
}
}
当程序开始发生碰撞时,一切都停止了。我的问题是创建多个敌人的最佳方法是什么,因为我需要在游戏中生成和删除它们,而我仍在学习。 我不知道我的实现是否正确。我想知道我该怎么办?在这段代码中,我无法从这个向量中删除敌人。 我感谢每一条建议。
【问题讨论】: