【问题标题】:Extra sprite spawning when the enemies are redrawn SFML重绘敌人时额外生成精灵 SFML
【发布时间】:2015-03-22 23:19:13
【问题描述】:

我正在制作 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 个精灵绘制?

【问题讨论】:

标签: c++ vector sfml


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-31
    • 1970-01-01
    • 1970-01-01
    • 2022-01-23
    相关资源
    最近更新 更多