Menu
CoddyTech

Ba trái tim

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

Chạm vào lính canh sẽ mất một trái tim. Ba trái tim trên thanh trên cùng là Heart1, Heart2 và Heart3, các nút con của $HUD/Hearts. Lính canh là một Area2D, vì vậy body_entered sẽ kích hoạt khi nó chạm vào anh hùng:

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

get_child(i) trả về nút con theo vị trí, bắt đầu đếm từ 0. Sau lần trúng đòn đầu tiên, health là 2 và get_child(2) là Heart3. Các trái tim biến mất từ bên phải.

body_entered kích hoạt một lần mỗi khi chạm. Anh hùng đứng trên đường đi của lính canh sẽ mất một trái tim mỗi lần lính canh quay lại.

challenge icon

Thử thách

Trung bình

Khiến lính gác làm anh hùng mất một trái tim.

  1. Trong main.gd, thêm var health = 3 và kết nối $Enemy.body_entered.
  2. Mỗi lần chạm, giảm health đi một, sau đó ẩn $HUD/Hearts.get_child(health).

Nhấn “Chơi” rồi chạm vào lính gác: trái tim ngoài cùng bên phải sẽ biến mất. Sau đó nhấn “Kiểm tra”.

Tự làm thử

extends Node2D

var has_key = false

func _ready():
	$Key.body_entered.connect(_on_key_body_entered)
	$DoorZone.body_entered.connect(_on_door_zone_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()

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

Tự luyện tập: Playground Godot