Menu
CoddyTech
flag Ru iconРусскийdown icon

Три сердца

Часть раздела Проекты путешествия по Godot на Coddy. Урок 30 из 33.

При касании охранника должно исчезать одно сердце. Три сердца на верхней панели — это Heart1, Heart2 и Heart3, дочерние узлы $HUD/Hearts. Охранник — это Area2D, поэтому его сигнал body_entered срабатывает, когда он касается героя:

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

get_child(i) возвращает дочерний узел по его позиции, начиная с 0. После первого попадания health равен 2, а get_child(2) — это Heart3. Сердца исчезают справа налево.

body_entered срабатывает при каждом касании. Герой, который остаётся на пути охранника, теряет по сердцу каждый раз, когда тот возвращается.

challenge icon

Задание

Средне

В main.gd:

  1. Добавь var health = 3 и подключи сигнал $Enemy.body_entered.
  2. При каждом касании уменьши health на единицу, затем скрой $HUD/Hearts.get_child(health).

Попробуйте сами

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()
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Проекты

Потренируйтесь самостоятельно: Песочница Godot