Vượt qua mười ống dẫn để chiến thắng
Thuộc phần Dự án trong hành trình Godot của Coddy. Bài học 28 trên 36.
Người chơi có thể thua nhưng chưa thể thắng. Khi điểm đạt 10, hiển thị You win! rồi tạm dừng. Kiểm tra tại chỗ điểm tăng:
if score == 10:
$HUD/Message.text = "You win!"
get_tree().paused = trueCuối cùng, cho người chơi chơi lại. Khi trò chơi đang tạm dừng, phím cách sẽ tải lại cảnh. Main được đặt thành Always, nên _process vẫn chạy:
func _process(delta):
if get_tree().paused and Input.is_action_just_pressed("jump"):
get_tree().paused = false
get_tree().reload_current_scene()Phím cách cũng là phím vỗ cánh. Flyer được đặt thành Pausable, nên bỏ qua lần nhấn phím khi trò chơi đang tạm dừng.
Thử thách
Trung bìnhThắng khi vượt qua mười ống và chơi lại.
- Khi điểm đạt
10, hiển thịYou win!trong$HUD/Messagevà tạm dừng trò chơi. - Khi trò chơi đang tạm dừng, nhấn phím cách (
jump) để tiếp tục và tải lại cảnh.
Nhấn Chơi và vượt qua mười ống: You win! sẽ xuất hiện. Nhấn phím cách để chơi lại. Sau đó, nhấn Kiểm tra.
Tự làm thử
extends Node2D
const PIPE = preload("res://pipe.tscn")
var score = 0
func _ready():
$PipeTimer.timeout.connect(_on_pipe_timer_timeout)
$Flyer.crashed.connect(_on_crash)
$HUD/Score.text = "0"
func _on_pipe_timer_timeout():
var pipe = PIPE.instantiate()
pipe.position = Vector2(700, randf_range(100, 250))
pipe.hit.connect(_on_crash)
pipe.scored.connect(_on_scored)
$Pipes.add_child(pipe)
func _on_crash():
$HUD/Message.text = "Game Over"
get_tree().paused = true
func _on_scored():
score += 1
$HUD/Score.text = str(score)
Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.
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óa3Dự án: Flappy Flyer
Trọng lực của FlyerVỗ cánh cho FlyerTự luyện tập: Playground Godot