Не обновляются значения в vector
Проблема заключается в том, что при изменения элемента списка, он сам обновляется, но в списке остается в прежнем состоянии. То есть

Код:
void EnemeyManager::followPlayer() {
for (auto enemy : enemiesList) {
int newX = player->getX() - enemy.getX();
int newY = player->getY() - enemy.getY();
int signX = math.sign(newX);
int signY = math.sign(newY);
if (!collisionManager.chekCollisionWall(newX, newY)) {
enemy.setY(enemy.getY() + signY);
enemy.setX(enemy.getX() + signX);
} else if (collisionManager.chekWallCollisionX(newX)) {
enemy.setY(enemy.getY() + signY);
} else if (collisionManager.chekWallCollisionY(newY)) {
enemy.setX(enemy.getX() + signX);
}
}
}
Метод работает на вычитании векторов.
Код sign:
int MathUtils::sign(int num) {
int sign = 0;
if (num > 0) {
sign = 1;
} else if (num < 0) {
sign = -1;
} else if (num == 0) {
sign = 0;
}
return sign;
}
Ответы (1 шт):
Автор решения: Harry
→ Ссылка
for (auto & enemy : enemiesList) {
Обратите внимание на & - без него вы работаете просто с копией...
