Menu
CoddyTech

Tres corazones

Parte de la sección Proyectos del Journey de Godot de Coddy. Lección 33 de 36.

Tocar al guardia debería costar un corazón. Los tres corazones de la barra superior son Heart1, Heart2 y Heart3, hijos de $HUD/Hearts. El guardia es un Area2D, así que su body_entered se activa cuando toca al héroe:

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

get_child(i) devuelve el nodo hijo según su posición, contando desde 0. Después del primer golpe, health es 2, y get_child(2) es Heart3. Los corazones desaparecen de derecha a izquierda.

body_entered se activa una vez por cada contacto. Un héroe que permanece en el camino del guardia pierde un corazón cada vez que este vuelve.

challenge icon

Desafío

Intermedio

Haz que el guardia le quite un corazón al héroe.

  1. En main.gd, añade var health = 3 y conecta $Enemy.body_entered.
  2. Cada vez que lo toque, reduce health en uno y después oculta $HUD/Hearts.get_child(health).

Pulsa «Jugar» y toca al guardia: desaparecerá el corazón de más a la derecha. Después, pulsa «Comprobar».

Pruébalo tú mismo

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

Todas las lecciones de Proyectos

Practica por tu cuenta: Playground de Godot