Menu
CoddyTech

剩下的硬币

本课属于 Coddy Godot 学习旅程的“信号与碰撞”单元。第 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 必须放在计数之前。

challenge icon

挑战

中等

修复剩余硬币的计数。

  1. 在 _on_body_entered 中,在 print 行之前将硬币从 coins 组中移除。
  2. 使用 remove_from_group()。

按“开始”,收集 3 枚硬币:控制台会依次显示 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 在线编辑器