Этот урок посвящен созданию атакующих врагов в Game Maker Studio. Мы реализуем функционал атаки, позволяющий врагам наносить урон главному игроку.
Создание атаки врагов
Для реализации атаки используем объект dmg_enemy, отвечающий за нанесение урона. Добавим ему свойство collision_check для проверки столкновения объекта врага (enemy) с объектом игрока (player). При столкновении игрок получит урон.
Необходимый код:
// Локальные переменные для определения направления отталкивания var dir_x, dir_y; // Определение направления от игрока к монстру dir_x = other.x - x; dir_y = other.y - y; // Переменные для силы и направления отталкивания var x_duration = (dir_x * 5); // Сила отталкивания по оси X (5 - пример) var y_duration = (dir_y * 5); // Сила отталкивания по оси Y // Создание объекта dmg_enemy var dmg_enemy_instance = instance_create_layer(x + x_duration, y + y_duration, "Instances", obj_dmg_enemy); // Присвоение ID атакующего объекта dmg_enemy_instance.creator_id = id; // Установка глубины для объекта dmg_enemy dmg_enemy_instance.depth = 0; // Установка силы отталкивания dmg_enemy_instance.knockback_x = x_duration; dmg_enemy_instance.knockback_y = y_duration; dmg_enemy_instance.knockback_power = 5; //Сила отталкивания 5
Этот код создает объект dmg_enemy с небольшим смещением относительно точки столкновения, создавая визуальный эффект отталкивания. Переменные x_duration и y_duration определяют силу и направление отталкивания.
Добавление таймера атаки
Для предотвращения непрерывной атаки врагов используем переменную stop_attack (значение false по умолчанию) в свойствах объекта врага и таймер alarm[0] для управления частотой атак.
Код:
// Проверка переменной stop_attack if (stop_attack == false) { // Код нанесения урона (из предыдущего блока) // Установка переменной stop_attack в true stop_attack = true; // Запуск таймера alarm[0] = room_speed; // Задержка в 1 секунду } // Обработчик таймера alarm[0] //Выполняется каждый кадр if (alarm[0] <= 0){ stop_attack = false; }
Теперь враги атакуют с задержкой, определяемой значением room_speed.
В этом уроке мы создали атакующих врагов, наносящих урон и отталкивающих игрока при столкновении. Мы также научились управлять частотой атак с помощью таймера. Этот урок завершает видеокурс, в котором мы создали полноценную игру с переходами между комнатами, анимированными персонажами и системой боя.