나는 적들이 맵에서 무작위로 스폰하고 무작위 프레임으로 모든 프레임마다 플레이어를 향해 움직이는 게임을 만들고 있습니다. 지도에는 장애물이 없으므로 적들은 항상 직선으로 움직여야합니다. 나는 운동 기능을 몇 번 썼지 만 적들이 항상 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 's Line ( http://en.wikipedia.org/wiki/Bresenham%27s_line_algorithm ) 과 같은 알고리즘을 사용해야한다고 생각 하지만 구현하려는 시도에는 동일한 문제가 있습니다. 적을 직선으로 움직이게하려면 어떻게해야합니까?