Estoy creando un juego donde los enemigos aparecen aleatoriamente en un mapa y luego se mueven hacia el jugador cada cuadro a una velocidad aleatoria. El mapa no tiene obstáculos, por lo que los enemigos siempre deben moverse en línea recta. Escribí la función de movimiento varias veces, pero no importa lo que los enemigos siempre golpeen 0, 45, 90, 135, 180, 225, 270, 315 ángulos, pero nunca una línea recta. Aquí hay un ejemplo del código:
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;
Este es mi primer intento de programación de juegos. Supongo que debería usar un algoritmo como Bresenham's Line ( http://en.wikipedia.org/wiki/Bresenham%27s_line_algorithm ) pero mis intentos de implementar tienen el mismo problema. ¿Cómo hago para que los enemigos se muevan en línea recta?