Menu
CoddyTech

Hết trái tim

Thuộc phần Dự án trong hành trình Godot của Coddy. Bài học 35 trên 36.

Khi trái tim cuối cùng biến mất, trò chơi kết thúc. Kiểm tra xem máu có bằng 0 ngay sau khi ẩn trái tim không:

if health == 0:
	$HUD/Message.text = "Game Over"
	get_tree().paused = true

Nhân vật chính và lính gác ở chế độ Pausable, nên chúng sẽ đóng băng. Main ở chế độ Always, nên _process tiếp tục chạy. Nó bắt đầu trò chơi mới khi người chơi nhấn Enter:

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

Tải lại sẽ đặt lại mọi thứ: ba trái tim, chiếc chìa khóa trên sàn và cánh cửa bị khóa.

challenge icon

Thử thách

Trung bình

Kết thúc trò chơi khi hết tim.

  1. Khi health về 0, hiển thị Game Over trong $HUD/Message và tạm dừng trò chơi.
  2. Khi trò chơi tạm dừng, nhấn Enter (action) để tiếp tục và tải lại cảnh.

Nhấn Chơi và mất ba tim: thông báo Game Over sẽ hiện ra. Nhấn Enter để chơi lại. Sau đó nhấn Kiểm tra.

Tự làm thử

extends Node2D

var has_key = false
var health = 3

func _ready():
	$Key.body_entered.connect(_on_key_body_entered)
	$DoorZone.body_entered.connect(_on_door_zone_body_entered)
	$Enemy.body_entered.connect(_on_enemy_body_entered)

func _on_key_body_entered(body):
	has_key = true
	$Key.queue_free()
	$HUD/KeyIcon.visible = true

func _on_door_zone_body_entered(body):
	if has_key:
		$Door.queue_free()
		$DoorZone.queue_free()

func _on_enemy_body_entered(body):
	health -= 1
	$HUD/Hearts.get_child(health).visible = false
	$Hero.flash()

Tất cả bài học trong Dự án

Tự luyện tập: Playground Godot