Я пытаюсь сделать самонаводящийся снаряд для своей игры с пулями, и мне нужно будет рассчитать угол между целью и снарядом относительно угла снаряда (0 градусов будет направлением, на которое указывает снаряд). Прямо сейчас расчет угла выполняется с помощью point_direction, но проблема в том, что когда цель находится в 4-м секторе, снаряд начинает лететь не в ту сторону. Другая проблема заключается в том, что если снаряд совершает поворот на 180 градусов во время погони за целью (или движется вниз, если его обстреливает противник), направление наведения изменится на противоположное. Я также пробовал функции mp_potential_, но их поиск пути слишком "агрессивен".
Вот как выглядит мой текущий код:
if(instance_exists(obj_fighter1)) {
var target;
target = instance_nearest(x, y, obj_fighter1);
if(target != noone) {
var angle_to_target;
angle_to_target = point_direction(x,y,target.x,target.y);
if(angle_to_target < direction) {
direction -= 2;
}
if(angle_to_target > direction) {
direction += 2;
}
}
}
Надеюсь, этой информации достаточно и она понятна.