Menu
CoddyTech

Drei Herzen

Teil des Abschnitts Projekte der Godot-Journey von Coddy. Lektion 33 von 36.

Eine Berührung mit der Wache sollte ein Herz kosten. Die drei Herzen in der oberen Leiste heißen Heart1, Heart2 und Heart3 und sind untergeordnete Elemente von $HUD/Hearts. Die Wache ist ein Area2D, daher wird ihr body_entered ausgelöst, wenn sie den Helden berührt:

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

get_child(i) gibt das untergeordnete Element eines Knotens anhand seiner Position zurück, wobei ab 0 gezählt wird. Nach dem ersten Treffer ist health gleich 2, und get_child(2) ist Heart3. Die Herzen verschwinden von rechts.

body_entered wird einmal pro Berührung ausgelöst. Ein Held, der im Weg der Wache bleibt, verliert jedes Mal ein Herz, wenn sie zurückkommt.

challenge icon

Aufgabe

Mittel

Sorge dafür, dass die Wache dem Helden ein Herz abzieht.

  1. Füge in main.gd var health = 3 hinzu und verbinde $Enemy.body_entered.
  2. Verringere bei jeder Berührung health um eins und blende dann $HUD/Hearts.get_child(health) aus.

Drücke auf „Spielen“ und berühre die Wache: Das Herz ganz rechts verschwindet. Drücke dann auf „Prüfen“.

Probier es selbst

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

Alle Lektionen in Projekte

Übe selbstständig: Godot-Playground