Оставшиеся монеты
Часть раздела Сигналы и столкновения путешествия по Godot на Coddy. Урок 17 из 27.
Каждая монета здесь подсчитывает оставшиеся монеты, когда ты её подбираешь. Первая выводит Coins left: 3, хотя осталось только две.
queue_free() ждёт до конца кадра. До этого момента монета всё ещё находится в своей группе, поэтому она считает и себя.
Сначала убери монету из группы с помощью remove_from_group(). Это срабатывает сразу:
func _on_body_entered(body):
remove_from_group("coins")
print("Coins left: ", get_tree().get_nodes_in_group("coins").size())
queue_free()Строки выполняются сверху вниз, поэтому remove_from_group нужно вызвать до подсчёта.
Задание
СреднеИсправь счётчик. Убери монету из группы coins до того, как она будет посчитана. При сборе трёх монет должно быть выведено Coins left: 2, Coins left: 1, затем Coins left: 0.
Попробуйте сами
extends Area2D
func _ready():
add_to_group("coins")
body_entered.connect(_on_body_entered)
func _on_body_entered(body):
print("Coins left: ", get_tree().get_nodes_in_group("coins").size())
queue_free()
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Сигналы и столкновения
Потренируйтесь самостоятельно: Песочница Godot