Ich erstelle ein Spiel, in dem die Feinde zufällig auf einer Karte erscheinen und sich dann in jedem Frame mit zufälliger Geschwindigkeit auf den Spieler zubewegen. Die Karte hat keine Hindernisse, daher sollten sich die Feinde immer in einer geraden Linie bewegen. Ich habe die Bewegungsfunktion ein paar Mal geschrieben, aber egal, was die Feinde immer getroffen haben, 0, 45, 90, 135, 180, 225, 270, 315 Winkel, aber niemals eine gerade Linie. Hier ist ein Beispiel für den Code:
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;
Dies ist mein erster Versuch, Spiele zu programmieren. Ich denke, es sollte ein Algorithmus wie Bresenham's Line ( http://en.wikipedia.org/wiki/Bresenham%27s_line_algorithm ) verwendet werden, aber meine Implementierungsversuche haben das gleiche Problem. Wie bewege ich Feinde in einer geraden Linie?