Menu
CoddyTech

收集硬币:已收集

本课属于 Coddy Godot 学习旅程的“信号与碰撞”单元。第 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)

这段代码可以放在 Main 的 _ready() 中运行,因为 Godot 会先准备好子节点,再准备父节点。到那时,每枚硬币都已加入该组。

challenge icon

挑战

中等

让 Main 听到每枚被拾取的硬币。

  1. 在 coin.gd 中,声明 signal collected,并在 queue_free() 之前发出它。
  2. 在 main.gd 的 _ready() 中,将每枚硬币的 collected 连接到新函数 _on_coin_collected()。
  3. 让该函数打印 Got a coin!。

按下“开始”,走过一枚硬币:控制台会显示 Got a coin!。然后点击“检查”。

亲手试试

extends Node2D

func _ready():
	pass

信号与碰撞中的所有课

自己练习: Godot 在线编辑器