我正在创建一个游戏,敌人会随机在地图上生成,然后每帧以随机速度向玩家移动。该地图没有障碍,因此敌人应始终沿直线移动。我写了几次移动函数,但是无论敌人总是打0、45、90、135、180、225、270、315角,但绝不打直线。这是代码示例:
base_speed = random();
diff_x = abs(enemy_y_pos - player_x_pos);
diff_y = abs(enemy_x_pos - player_y_pos);
if (diff_x > diff_y) {
y_speed = base_speed;
} else if (diff_y > diff_x) {
x_speed = base_speed;
}
if (enemy_x_pos < player_x_pos) {
velocity.x = x_speed;
} else if (enemy_x_pos > player_x_pos) {
velocity.x = -x_speed;
} else {
velocity.x = 0;
}
if (enemy_y_pos < player_y_pos) {
velocity.y = y_speed;
} else if (enemy_y_pos > player_y_pos) {
velocity.y = -y_speed;
} else {
velocity.y = 0;
}
enemy_x_pos = enemy_x_pos + velocity.x;
enemy_y_pos = enemy_y_pos + velocity.y;
这是我第一次尝试游戏编程。我猜应该使用像Bresenham的Line(http://en.wikipedia.org/wiki/Bresenham%27s_line_algorithm)这样的算法,但是我尝试实现的问题也相同。如何使敌人直线移动?