Menu
CoddyTech

Khởi động lại bằng một phím

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

Dòng này loại bỏ cảnh hiện tại rồi tải lại từ tệp:

get_tree().reload_current_scene()

Trò chơi mới bắt đầu với ba mạng, người chơi ở trên ô vuông màu xanh lá và dòng Game Over bị ẩn.

Main cũng bị tạm dừng, nên _process không nhận được phím bấm. Hãy đặt process_mode của chính Main thành Node.PROCESS_MODE_ALWAYS. Các nút con kế thừa chế độ đó, ngoại trừ người chơi. Cảnh đặt người chơi ở chế độ Pausable, nên người chơi vẫn dừng lại.

Tải lại không bỏ tạm dừng trò chơi. Hãy đặt get_tree().paused = false trước khi tải lại, nếu không trò chơi mới sẽ bắt đầu ở trạng thái tạm dừng.

challenge icon

Thử thách

Dễ

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

  1. Trong _ready(), đặt process_mode của chính nút này thành Node.PROCESS_MODE_ALWAYS (không có $).
  2. Trong _process(), khi lives bằng 0 và action vừa được nhấn, bỏ tạm dừng trò chơi, rồi tải lại cảnh.

Nhấn Chơi, mất ba mạng rồi nhấn E: một ván mới bắt đầu với Lives: 3. Sau đó nhấn Kiểm tra.

Tự làm thử

extends Node2D

var lives = 3

func _ready():
	$HUD/Lives.text = "Lives: %d" % lives
	$Player.hurt.connect(_on_player_hurt)
	$Blink.timeout.connect(_on_blink_timeout)
	$Blink.process_mode = Node.PROCESS_MODE_ALWAYS

func _process(delta):
	pass

func _on_player_hurt():
	lives -= 1
	$HUD/Lives.text = "Lives: %d" % lives
	if lives == 0:
		$HUD/GameOver.visible = true
		$HUD/Hint.visible = true
		get_tree().paused = true

func _on_blink_timeout():
	if lives == 0:
		$HUD/GameOver.visible = not $HUD/GameOver.visible
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