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.
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.
- Trong
_ready(), đặtprocess_modecủa chính nút này thànhNode.PROCESS_MODE_ALWAYS(không có$). - Trong
_process(), khilivesbằng 0 vàactionvừ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
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
2Hiển thị điểm trên màn hình
Một nhãn trên màn hìnhChuyển số thành văn bảnĐịnh dạng bằng phần trămCập nhật nhãnĐồng hồ trên màn hìnhTự luyện tập: Playground Godot