打砖块得分
本课属于 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,否则在击碎第一块砖之前,它会一直空着。
挑战
中等每打碎一块砖,得 10 分。
- 在
ball.gd中,添加signal brick_broken,并在砖块被打碎时发出该信号。 - 在
main.gd中,添加var score = 0,并在_ready中将$HUD/Score显示为Score: 0。 - 将
$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 在线编辑器