Menu
CoddyTech

Сборщик монет: Осталось монет

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

Скрипт Main должен знать, сколько монет осталось. Храни число в переменной в начале main.gd. Один раз подсчитай группу в начале, а затем вычитай по одной монете за каждую собранную:

var coins_left = 0

func _ready():
	coins_left = get_tree().get_nodes_in_group("coins").size()

Почему бы не подсчитывать группу в _on_coin_collected? Монета отправляет сигнал collected непосредственно перед тем, как удалить себя. Она остаётся в своей группе до конца кадра, поэтому в подсчёт попадёт и она.

Переменная меняется только тогда, когда ты сам её меняешь.

challenge icon

Задание

Средне

Сделай так, чтобы Main считал оставшиеся монеты.

  1. В начале main.gd добавь var coins_left = 0, а в _ready() присвой ему количество элементов в группе coins.
  2. В _on_coin_collected() уменьши значение на единицу и выведи его вместо Got a coin!: print("Coins left: ", coins_left).

Нажми «Играть» и возьми монету: в консоли появится Coins left: 5. Затем нажми «Проверить».

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

extends Node2D

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

func _on_coin_collected():
	print("Got a coin!")

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

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