Menu
CoddyTech

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 = true

Cuố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.

challenge icon

Thử thách

Trung bình

Thắng khi vượt qua mười ống và chơi lại.

  1. Khi điểm đạt 10, hiển thị You win! trong $HUD/Message và tạm dừng trò chơi.
  2. 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)
quiz iconTự kiểm tra

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

Tự luyện tập: Playground Godot