所以我正在浏览论坛并找到了应该制作的公式,比方说,敌人跟随玩家。然而,当我运行我的程序时,敌人开始行走而不是玩家的方向。无论我把角色放在哪里,敌人都会向下直行。这是代码:
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;
}
答案 0 :(得分:2)
问题在于从浮点到整数的近似值,如果你的速度很低,这一点尤为明显。你应该确保:
dirx
和diry
是浮点