让我的敌人朝我的玩家 C++ 移动
Getting my enemy to move toward my player C++
我正在尝试让我的 Enemy
移动到我的 Player
。
我知道的事:
- 玩家位置
- 敌人的位置
- 敌人的速度
我需要做的事情:
- 知道玩家的方向,让敌人移动
所以我想我需要做的是 "normalize" 敌人的位置根据玩家的位置所以我知道去哪里,并且两者都有一个基于 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
我做错了什么?
您对 normalize
的定义只有在您使用它之后才会出现。要么将定义移到 Enemy::Move
之前,要么将函数声明放在文件顶部的包含之后:
Vector2f normalize(const Vector2f& source);
这是相同行为的small example。
为您的函数制作原型,这将摆脱 "unknown function"。
我正在尝试让我的 Enemy
移动到我的 Player
。
我知道的事:
- 玩家位置
- 敌人的位置
- 敌人的速度
我需要做的事情:
- 知道玩家的方向,让敌人移动
所以我想我需要做的是 "normalize" 敌人的位置根据玩家的位置所以我知道去哪里,并且两者都有一个基于 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
我做错了什么?
您对 normalize
的定义只有在您使用它之后才会出现。要么将定义移到 Enemy::Move
之前,要么将函数声明放在文件顶部的包含之后:
Vector2f normalize(const Vector2f& source);
这是相同行为的small example。
为您的函数制作原型,这将摆脱 "unknown function"。