Menu
CoddyTech

Сборщик монет: Собрано

Часть раздела Сигналы и столкновения путешествия по Godot на Coddy. Урок 25 из 27.

В main.gd хранятся правила игры, например сколько монет осталось. Main должен знать о каждой монете, которую ты берёшь. Поэтому каждая монета отправляет сигнал, а Main принимает все такие сигналы.

В coin.gd объяви signal collected и отправь этот сигнал прямо перед тем, как монета удалит себя:

if body.is_in_group("player"):
	collected.emit()
	queue_free()

В main.gd подключи все монеты из группы, как ты делал со шипами:

for coin in get_tree().get_nodes_in_group("coins"):
	coin.collected.connect(_on_coin_collected)

Это работает в _ready() узла Main, потому что Godot подготавливает дочерние узлы раньше родительского. К этому моменту все монеты уже вступили в группу.

challenge icon

Задание

Средне

Пусть Main узнаёт о каждой собранной монете.

  1. В coin.gd объяви signal collected и отправь его перед queue_free().
  2. В _ready() файла main.gd подключи collected каждой монеты к новой функции _on_coin_collected().
  3. Сделай так, чтобы эта функция выводила Got a coin!.

Нажми «Играть» и пройдись по монете: в консоли появится Got a coin!. Затем нажми «Проверить».

Попробуйте сами

extends Node2D

func _ready():
	pass

Все уроки раздела Сигналы и столкновения

Потренируйтесь самостоятельно: Песочница Godot