sfml — Заставить моего врага двигаться к игроку. Переполнение стека

Я пытаюсь получить Enemy перейти к моему Player,

То, что я знаю:

  • Позиция игрока
  • Позиция врага
  • Скорость противника

Что мне нужно сделать:

  • Зная направление к игроку, заставьте врага двигаться

Поэтому я подумал, что мне нужно «нормализовать» позицию врагов в соответствии с позицией игроков, чтобы я знал, куда идти, и у обоих есть позиция, основанная на Vector2f,

И это код, который я имею во враге:

void Enemy::Move()
{
//cout << "Move" << endl;

// Make movement
Vector2f playerPosition = EntityManager::Instance().player.GetPosition();
Vector2f thisPosition;
thisPosition.x = xPos;
thisPosition.y = yPos;
//Vector2f direction = normalize(playerPosition - thisPosition);

speed = 5;
//EntityManager::Instance().enemy.enemyVisual.move(speed * direction);
}

Vector2f normalize(const Vector2f& source)
{
float length = sqrt((source.x * source.x) + (source.y * source.y));
if (length != 0)
return Vector2f(source.x / length, source.y / length);
else
return source;
}

Ошибка:

'normalize': identifier not found

Что я делаю неправильно?

0

Решение

Ваше определение для normalize не приходит, пока вы не используете его. Либо перенести определение до Enemy::Moveили поместите объявление функции вверху вашего файла после того, как вы включили:

Vector2f normalize(const Vector2f& source);

Это маленький пример того же поведения.

6

Другие решения


По вопросам рекламы [email protected]