1. Создайте объект пули (например, obj_bullet).
2. В событии Create объекта пули добавьте следующие переменные:
speed = 5; // Скорость пули
range = 300; // Радиус обнаружения врага (в пикселях)
target = noone; // Переменная для хранения цели
3. В событии Step объекта пули добавьте следующий код:
// Если цель не выбрана, ищем ближайшего врага в радиусе
if (target == noone) {
target = instance_nearest(x, y, obj_enemy); // Замените obj_enemy на ваш объект врага
// Проверяем, находится ли враг в радиусе действия
if (target != noone) {
if (point_distance(x, y, target.x, target.y) > range) {
target = noone;
}
}
}
// Если цель выбрана, направляем пулю к ней
if (target != noone) {
// Вычисляем направление к цели
var dir = point_direction(x, y, target.x, target.y);
// Плавно поворачиваем пулю к цели
var angle_diff = angle_difference(direction, dir);
direction -= min(abs(angle_diff), 5) * sign(angle_diff);
// Устанавливаем направление движения
motion_set(direction, speed);
}
// Уничтожаем пулю, если она вышла за пределы комнаты
if (x < 0 || x > room_width || y < 0 || y > room_height) {
instance_destroy();
}
4. В объекте, который стреляет (например, игрок или турель), создайте пулю при выстреле:
// В событии, отвечающем за стрельбу (например, нажатие клавиши или таймер)
var bullet = instance_create_layer(x, y, "Bullets", obj_bullet);
bullet.direction = image_angle; // Устанавливаем начальное направление пули