当敌人重绘SFML时产生额外的精灵

时间:2015-03-22 23:19:13

标签: c++ vector sfml

我正在制作sfml游戏,当时所有的敌人都死了。它们被设置为重生,但是当发生这种情况时,它们会重新生成一个额外的精灵。

精灵中加载的代码是

unsigned int orcNumber = 5;
for (int i = 0; i < orcNumber; i++)
{
    SpriteVector.push_back(ogreSprite);
    SpriteVector[i].setPosition(spawnPointX[i], spawnPointY[i]);
}

如果敌人在屏幕外或被击中时移除敌人的代码与使用擦除类似于以下内容。

for (unsigned j = 0; j < SpriteVector.size(); j++)
{
    if (this->SpriteVector[j].getPosition().x < 0 - 80 )
    {
        //this succesfully removes the object from the vector
        SpriteVector.erase(SpriteVector.begin() + j); 
        std::cout << "Container size..." << SpriteVector.size() << "\n";
    }
}

重绘它们的声明是:

unsigned int orcNumberRespawn = 5;
if (SpriteVector.size() <= 1)
{           
    for (int i = 0; i < orcNumberRespawn; i++)
    {
        SpriteVector.push_back(ogreSprite);
        SpriteVector[i].setPosition(spawnPointX[i], spawnPointY[i]);
    }
}

window.draw(SpriteVector[i]);

任何人都可以确定为什么当需要重新绘制精灵时,每次都会使用+ 1精灵进行绘制?

1 个答案:

答案 0 :(得分:0)

问题在于这些矢量循环之外的循环。