Menu
CoddyTech

Trzy serca

Część sekcji Projekty ścieżki Godot w Coddy. Lekcja 33 z 36.

Dotknięcie strażnika powinno kosztować jedno serce. Trzy serca na górnym pasku to Heart1, Heart2 i Heart3, dzieci węzła $HUD/Hearts. Strażnik jest obiektem Area2D, więc jego sygnał body_entered jest emitowany, gdy dotknie bohatera:

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

get_child(i) zwraca dziecko węzła o podanym miejscu, licząc od 0. Po pierwszym trafieniu health wynosi 2, a get_child(2) to Heart3. Serca znikają od prawej strony.

Sygnał body_entered jest emitowany raz przy każdym dotknięciu. Bohater, który pozostaje na drodze strażnika, traci serce za każdym razem, gdy strażnik wraca.

challenge icon

Wyzwanie

Średni

Spraw, by strażnik odebrał bohaterowi jedno serce.

  1. W main.gd dodaj var health = 3 i połącz $Enemy.body_entered.
  2. Przy każdym dotknięciu zmniejsz health o jeden, a następnie ukryj $HUD/Hearts.get_child(health).

Naciśnij „Graj” i dotknij strażnika: zniknie serce po prawej stronie. Następnie naciśnij „Sprawdź”.

Spróbuj swoich sił

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()

Wszystkie lekcje w sekcji Projekty

Poćwicz samodzielnie: Edytor online Godot