剩下的硬币
本课属于 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 必须放在计数之前。
挑战
中等修复剩余硬币的计数。
- 在
_on_body_entered中,在print行之前将硬币从coins组中移除。 - 使用
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 在线编辑器