Kết thúc trò chơi Breakout
Thuộc phần Dự án trong hành trình Godot của Coddy. Bài học 9 trên 36.
Ba lần trượt sẽ kết thúc trò chơi. Khi số mạng bằng 0, hãy hiển thị Game Over và tạm dừng bằng get_tree().paused = true. Thanh đỡ và quả bóng có thể tạm dừng, nên chúng sẽ đứng yên. Main luôn hoạt động, nên nó vẫn chạy và có thể đọc phím Enter:
func _process(delta):
if get_tree().paused and Input.is_action_just_pressed("action"):
get_tree().paused = false
get_tree().reload_current_scene()Bỏ tạm dừng trước khi tải lại. Trạng thái tạm dừng thuộc về cây, không phải cảnh, nên cảnh được tải lại sẽ bắt đầu trong trạng thái đóng băng.
Thử thách
KhóKết thúc trò chơi khi hết mạng cuối cùng.
- Trong
_on_missed, khilivesbằng 0, hiển thịGame Overtrong$HUD/Messagevà tạm dừng trò chơi. - Thêm
_process: khi trò chơi đang tạm dừng vàactionvừa được nhấn, bỏ tạm dừng, rồi tải lại cảnh.
Nhấn Chơi và để bóng rơi ba lần: dòng Game Over sẽ hiện ra và bóng dừng lại. Nhấn Enter để bắt đầu lại. Sau đó nhấn Kiểm tra.
Tự làm thử
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)]
var score = 0
var lives = 3
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)
$Ball.brick_broken.connect(_on_brick_broken)
$HUD/Score.text = "Score: 0"
$Ball.missed.connect(_on_missed)
$HUD/Lives.text = "Lives: 3"
func _on_brick_broken():
score += 10
$HUD/Score.text = "Score: %d" % score
func _on_missed():
lives -= 1
$HUD/Lives.text = "Lives: %d" % lives
Tất cả bài học trong Dự án
1Dự án: Breakout
Thanh đỡ trong BreakoutGiữ thanh đỡ trong màn hình4Dự án: trò chơi khám phá hầm ngục
Khám phá hầm ngụcNhặt chìa khóaTự luyện tập: Playground Godot