В Этой статье мы сделаем функцию, которая будет добавлять на сцену в рандомных местах объекты и делать она это будет каждые 5 секунд.
1.Код добавления объекта на сцену
#Загружаем наш объект
var enemy = load("res://Scene/Enemy.tscn")
func _ready():
#Создаем объект
var e = enemy.instantiate()
#Даём ему координаты
e.position = Vector2(100,0)
#Добавляем на сцену
add_child(e)
Скрипт готов!
2.Теперь добавим таймер для нашего скрипта.
Добавим дочерний узел Timer
У нас во вкладке "Узел" -> "Сигналы", появится вкладка Timer
Кликаем два раза и в появившемся окне выбираем элемент к которому хотим присоединить узел, в моем случае это Node2D, то есть сама сцена.
У нас в коде появится новая функция "_on_timer_timeout" и теперь изменим код следующим образом, перенесем все из функции _ready в новую функцию:
var enemy = load("res://Scene/Enemy.tscn")
var timer = Timer.new()
func _on_timer_timeout():
var e = enemy.instantiate()
e.position = Vector2(100,0)
add_child(e)
Что бы настроить работу таймера нужно выбрать его в дереве сцены и изменить в инспекторе, мы поставим во вкладке Wait Time 5 секунд (Время срабатывания) и поставим галочку в Autostart, что бы он запускался сам при запуски сцены.
3. Теперь сделаем рандомные координаты
Изменим наш код так:
var enemy = load("res://Scene/Enemy.tscn")
var rng = RandomNumberGenerator.new()
func _ready():
rng.randomize()
func _on_timer_timeout():
var e = enemy.instantiate()
#Генерируем координаты в диапазоне от 100 до 400
e.position = Vector2(rng.randf_range(100,400),0)
add_child(e)