Menu
CoddyTech

Né tránh: Kết thúc trò chơi

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

Khi số mạng bằng 0, trò chơi vẫn tiếp diễn. Điểm số vẫn tăng và số mạng giảm xuống dưới 0.

Kết thúc trò chơi như bạn đã làm trong căn phòng có gai. Hiện nhãn GameOver đang ẩn và tạm dừng trò chơi. Việc tạm dừng sẽ dừng cả hai bộ đếm thời gian, nên điểm số giữ nguyên ở số giây bạn đã sống sót. Các khối dừng lại tại vị trí hiện tại.

if lives == 0:
	$HUD/GameOver.visible = true
	get_tree().paused = true
challenge icon

Thử thách

Trung bình

Kết thúc trò chơi khi hết mạng.

  1. Trong _on_player_hurt(), sau dòng cập nhật nhãn, kiểm tra xem lives có bằng 0 không.
  2. Nếu có, hiển thị $HUD/GameOver và tạm dừng trò chơi.

Nhấn Chơi và để nhân vật bị trúng đòn ba lần: Game Over sẽ hiện ra và các khối sẽ dừng lại. 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

Tất cả bài học trong Luật chơi

Tự luyện tập: Playground Godot