Menu
CoddyTech

Três corações

Parte da seção Projetos do Journey de Godot da Coddy. Lição 33 de 36.

Tocar no guarda deve custar um coração. Os três corações na barra superior são Heart1, Heart2 e Heart3, filhos de $HUD/Hearts. O guarda é uma Area2D, então seu body_entered é acionado quando toca no herói:

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

get_child(i) fornece um nó filho pela sua posição, começando a contar do 0. Depois do primeiro golpe, health é 2, e get_child(2) é Heart3. Os corações desaparecem da direita para a esquerda.

body_entered é acionado uma vez por toque. Um herói que permanece no caminho do guarda perde um coração cada vez que ele volta.

challenge icon

Desafio

Médio

Faça o guarda tirar um coração do herói.

  1. Em main.gd, adicione var health = 3 e conecte $Enemy.body_entered.
  2. A cada toque, diminua health em um e, em seguida, oculte $HUD/Hearts.get_child(health).

Pressione “Jogar” e toque no guarda: o coração mais à direita desaparece. Depois, pressione “Verificar”.

Experimente você mesmo

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 as lições de Projetos

Pratique por conta própria: Playground de Godot