收集硬币:已收集
本课属于 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 会先准备好子节点,再准备父节点。到那时,每枚硬币都已加入该组。
挑战
中等让 Main 听到每枚被拾取的硬币。
- 在
coin.gd中,声明signal collected,并在queue_free()之前发出它。 - 在
main.gd的_ready()中,将每枚硬币的collected连接到新函数_on_coin_collected()。 - 让该函数打印
Got a coin!。
按下“开始”,走过一枚硬币:控制台会显示 Got a coin!。然后点击“检查”。
亲手试试
extends Node2D
func _ready():
pass
信号与碰撞中的所有课
自己练习: Godot 在线编辑器