收集硬币:剩余硬币
本课属于 Coddy Godot 学习旅程的“信号与碰撞”单元。第 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。它会一直留在组中,直到当前帧结束,所以统计结果会包含这枚金币。
只有在你修改变量时,变量才会改变。
挑战
中等让 Main 统计剩余的硬币。
- 在
main.gd的顶部添加var coins_left = 0,并在_ready()中将它设为coins组的大小。 - 在
_on_coin_collected()中将数量减 1,并用它替换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 在线编辑器