【发布时间】:2015-11-24 19:49:30
【问题描述】:
我目前正在构建一个游戏,玩家驾驶一辆半卡车,然后被敌方汽车尾随并尝试猛烈撞击。我从我的一位老师那里得到了一些帮助,教我如何让敌人选择前进的方向,以便跟随并攻击玩家。在实施她给我的东西后,我的行为很奇怪,感觉好像我错过了一些东西。
当我在游戏中将一辆敌车放置在玩家附近并将玩家的位置传递到函数中时,敌车只会在圆圈中旋转。如果我向它添加速度,我会在大圆圈中行驶。一般来说,它从不选择直行的方向。
在调试之后,我的 if 语句似乎永远无法解析,并且在每次更新时它一直试图回到 0,但由于某种原因它不能。 我不确定是玩家的坐标造成了问题,还是我的数学计算出了问题。
void EnemySpeedy::playerTracking(float posX, float posY)
{
//Direction choosing
dir.x = posX - pos.x;
dir.y = posY - pos.y;
//plus maybe this?
goalAngle = atan2f(dir.y, dir.x);
//I think this is the problem code?//
if (angle < goalAngle) angle -= sfw::getDeltaTime() * angularSpeed;
else angle += sfw::getDeltaTime() * angularSpeed;
//AI Movement alla adding velocity
acc = speed;
vel = vel + (acc - dragVel) * sfw::getDeltaTime();
vel = std::fmaxf(0, vel);
vel = std::fminf(vel, maxVel);
pos = { pos.x + vel * cosf(angle * PI / 180) * sfw::getDeltaTime(),
pos.y + vel * sinf(angle * PI / 180) * sfw::getDeltaTime() };
}
【问题讨论】:
标签: c++ artificial-intelligence