让我的敌人走向我的玩家C ++

时间:2015-01-25 20:03:38

标签: c++ sfml game-ai

我想让我的Enemy转到Player

我知道的事情:

  • 玩家的位置
  • The Enemie`'职位
  • 敌人的速度

我需要做的事情:

  • 了解玩家的方向,让敌人移动

所以我认为我需要做的是根据球员位置“规范化”敌人的位置,以便我知道去哪里,并且两者都有一个基于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

我做错了什么?

2 个答案:

答案 0 :(得分:6)

normalize的定义直到您使用之后才会出现。要么在Enemy::Move之前移动定义,要么在包含之后将函数声明放在文件的顶部:

Vector2f normalize(const Vector2f& source);

这是同一行为的small example

答案 1 :(得分:1)

对函数进行原型设计,这将摆脱“未知函数”的作用。