Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Как сделать самонаводку Game maker 2?

Павел Баранов Ученик (110), на голосовании 2 месяца назад
мне надо чтоб пуля наводилась на врага в определенном радиусе.
Голосование за лучший ответ
Рустам Абдрашитов Мудрец (12144) 3 месяца назад
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; // Устанавливаем начальное направление пули
Павел БарановУченик (110) 3 месяца назад
не работает но спасибо
Похожие вопросы