Оставшиеся монеты
Часть раздела Сигналы и столкновения путешествия по 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 должна идти перед подсчётом.
Задание
СреднеИсправь подсчёт оставшихся монет.
- В
_on_body_enteredудали монету из группыcoinsперед строкойprint. - Используй
remove_from_group().
Нажми «Играть» и собери три монеты: в консоли отобразится 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