simple spawner | gml
objSpawner Create
ticks = 0; seconds = 0;
objSpawner Step
// ------------ TIME CALCULATIONS:
ticks += 1;
seconds = ticks div room_speed;
var a_second_has_passed = false;
if (ticks mod room_speed == 0) a_second_has_passed = true;
var two_seconds_have_passed = false;
if (seconds mod 2 == 0) two_seconds_have_passed = true;
var five_seconds_have_passed = false;
if (seconds mod 5 == 0) five_seconds_have_passed = true;
// ------------ SET SPAWN LOCATION:
var xx = room_width / 2; // spawn location x
var yy = room_height / 2; // spawn location y
// ------------ SPAWN CALCULATIONS EVERY SECOND ON THE SECOND:
if a_second_has_passed {
// SPAWN UP TO 5 ENEMIES EVERY SECOND THAT PASSES:
if instance_number(objEnemy1) < 5 {
var enemy = instance_create_layer(xx,yy,"Instances",objEnemy1);
with(enemy){
direction = point_direction(x,y,random(room_width),room_height);
speed = irandom_range(1,2);
}
}
// SPAWN UP TO 3 ENEMIES EVERY TWO SECONDS:
if instance_number(objEnemy2) < 3 and two_seconds_have_passed {
var enemy = instance_create_layer(xx,yy,"Instances",objEnemy2);
with(enemy){
direction = irandom_range(90,180);
speed = irandom_range(3,4);
}
}
// SPAWN UP TO 2 ENEMIES EVERY FIVE SECONDS:
if instance_number(objEnemy3) < 2 and five_seconds_have_passed {
var enemy = instance_create_layer(xx,yy,"Instances",objEnemy3);
with(enemy){
direction = point_direction(x,y,0,0);
speed = irandom_range(5,6);
}
}
}