GameMaker Studio: Атакующие враги — Урок 10

Этот урок посвящен созданию атакующих врагов в 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.

В этом уроке мы создали атакующих врагов, наносящих урон и отталкивающих игрока при столкновении. Мы также научились управлять частотой атак с помощью таймера. Этот урок завершает видеокурс, в котором мы создали полноценную игру с переходами между комнатами, анимированными персонажами и системой боя.

Что будем искать? Например,программа