Menu
CoddyTech

Né tránh: Chơi lại

Thuộc phần Luật chơi trong hành trình Godot của Coddy. Bài học 29 trên 29.

Bước cuối cùng cho phép người chơi nhấn E sau khi trò chơi kết thúc để chơi lại.

Bạn đã làm điều này trong phòng gai. Đặt process_mode của Main thành Node.PROCESS_MODE_ALWAYS để _process vẫn chạy khi trò chơi tạm dừng. Trong các cảnh, người chơi, cả hai bộ hẹn giờ và mọi khối đều được đặt ở chế độ Có thể tạm dừng, vì vậy chúng vẫn dừng lại. Khi nhấn phím, bỏ tạm dừng rồi tải lại:

func _process(delta):
	if lives == 0 and Input.is_action_just_pressed("action"):
		get_tree().paused = false
		get_tree().reload_current_scene()

Thao tác tải lại sẽ xóa mọi khối, điểm số và số mạng. Đồng thời hiển thị nhãn Hint khi trò chơi kết thúc để người chơi biết cần nhấn phím nào.

challenge icon

Thử thách

Khó

Cho người chơi nhấn E để chơi lại.

  1. Trong _ready(), đặt process_mode của nút này thành Node.PROCESS_MODE_ALWAYS.
  2. Khi trò chơi kết thúc, cũng hiển thị $HUD/Hint.
  3. Thêm _process(): khi lives bằng 0 và action vừa được nhấn, bỏ tạm dừng trò chơi và tải lại cảnh.

Nhấn Chơi, để thua rồi nhấn E: một ván mới bắt đầu với Score: 0. Sau đó nhấn Kiểm tra.

Tự làm thử

extends Node2D

var block_scene = preload("res://block.tscn")
var score = 0
var lives = 3

func _ready():
	$HUD/Score.text = "Score: %d" % score
	$HUD/Lives.text = "Lives: %d" % lives
	$SpawnTimer.timeout.connect(_on_spawn_timer_timeout)
	$ScoreTimer.timeout.connect(_on_score_timer_timeout)
	$Player.hurt.connect(_on_player_hurt)

func _on_spawn_timer_timeout():
	var block = block_scene.instantiate()
	block.position = Vector2(randf_range(40, 600), -30)
	add_child(block)

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

func _on_player_hurt():
	lives -= 1
	$HUD/Lives.text = "Lives: %d" % lives
	if lives == 0:
		$HUD/GameOver.visible = true
		get_tree().paused = true
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 Luật chơi

Tự luyện tập: Playground Godot