敌人不会跟随玩家。 SDL2 / C ++

时间:2015-02-18 13:01:55

标签: c++ sdl

所以我正在浏览论坛并找到了应该制作的公式,比方说,敌人跟随玩家。然而,当我运行我的程序时,敌人开始行走而不是玩家的方向。无论我把角色放在哪里,敌人都会向下直行。这是代码:

void Enemy::enemyMovement(SDL_Rect& passed_player_rect, int speed){

player_rect = passed_player_rect;

dirx = player_rect.x - enemy_rect.x;
diry = player_rect.y - enemy_rect.y;

hyp = sqrt(dirx*dirx + diry*diry);

dirx /=hyp;
diry /=hyp;

enemy_rect.x += dirx * speed;
enemy_rect.y += diry * speed;
}

1 个答案:

答案 0 :(得分:2)

问题在于从浮点到整数的近似值,如果你的速度很低,这一点尤为明显。你应该确保:

  1. dirxdiry是浮点
  2. 你保持球员和敌人 存储在浮点变量中的位置,您可以使用这些变量进行所有计算并更新新位置
  3. 在每次移动时,您更新存储在SDL_Rect结构中的整数位置中的可视化,根据第2点描述的变量的当前/更新值执行舍入操作