Menu
CoddyTech

打砖块得分

本课属于 Coddy Godot 学习旅程的“项目”单元。第 7 课,共 36 课。

每块砖值 10 分。球知道自己什么时候击碎了一块砖,而 main.gd 负责记录分数。信号会把它们连接起来。球每击碎一块砖就发出信号,主脚本则负责监听。

在 ball.gd 中,在顶部声明信号,并在 smash() 旁边发出信号:

signal brick_broken

# 在 _on_body_entered 中,紧接着 body.smash() 之后:
brick_broken.emit()

在 main.gd 中,在 _ready 中连接信号,并在它调用的函数中增加分数:

func _on_brick_broken():
	score += 10
	$HUD/Score.text = "Score: %d" % score

这个标签位于名为 HUD 的 CanvasLayer 中。在 _ready 中也将它设为 Score: 0,否则在击碎第一块砖之前,它会一直空着。

challenge icon

挑战

中等

每打碎一块砖,得 10 分。

  1. 在 ball.gd 中,添加 signal brick_broken,并在砖块被打碎时发出该信号。
  2. 在 main.gd 中,添加 var score = 0,并在 _ready 中将 $HUD/Score 显示为 Score: 0。
  3. 将 $Ball.brick_broken 连接到一个会将分数加 10 并显示分数的函数。

按“开始”并打碎一块砖:标签会显示 Score: 10。然后点击“检查”。

亲手试试

extends Node2D

const BRICK = preload("res://brick.tscn")
const COLORS = [Color(1, 0.42, 0.42), Color(1, 0.78, 0.34), Color(0.49, 0.95, 0.75), Color(0.369, 0.635, 1), Color(0.75, 0.82, 0.95)]

func _ready():
	for row in 5:
		for column in 8:
			var brick = BRICK.instantiate()
			brick.position = Vector2(68 + column * 72, 60 + row * 26)
			brick.color = COLORS[row]
			add_child(brick)

项目中的所有课

自己练习: Godot 在线编辑器