我正在做一个游戏,我正在尝试用bool shouldDie == true寻找敌人。我有一个敌人std :: list,而且我个人不知道代码出了什么问题。如果敌人的shouldDie == true,那么我将播放动画。希望您能帮助我理解我为什么得到此错误。
而且我也没有重载的==运算符,我已经在线搜索了,不确定是否有必要...
bool foundEnemy(Enemy& enemy) { return enemy.shouldDie == true; }
void Enemy::PlayDeathAnimation(std::list<Enemy>& enemies) { dead = true; auto it = std::find_if(enemies.begin(), enemies.end(), foundEnemy); // where I think the error is auto enemy = std::next(it, 0); if (animationClock.getElapsedTime().asSeconds() >= 0.05f) { enemy->icon.setTextureRect(animationFrames[animationCounter]); if (animationCounter >= 8) { enemies.remove(*enemy); } animationCounter++; animationClock.restart(); } }
class Enemy : public Entity { public: Enemy() {} Enemy(sf::Vector2f position, sf::Texture* texture,Player* target); ~Enemy(); void Update(sf::RenderWindow* window, float tElapsedTime); void Draw(sf::RenderWindow* window); void Fire(float tElapsedTime); void CheckBullets(); void CheckEnemyBullets(); void CheckHealth(); void SetPosition(float x, float y); bool shouldDie = false; void PlayDeathAnimation(std::list<Enemy>& enemies); private: bool dead = false; sf::Texture* deathSpriteSheet; std::vector<sf::IntRect> animationFrames; std::vector<Bullet> bullets; sf::RectangleShape origin; sf::RectangleShape aim; Player* target; int animationCounter = 0; sf::Clock animationClock; };
我正在做一个游戏,我正在尝试用bool shouldDie == true寻找敌人。我有一个敌人std :: list,而且我个人不知道代码出了什么问题。如果敌人应该死== true ...
错误实际上不在您认为的位置,而是以下几行。