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

Без сердец

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

Когда исчезнет последнее сердечко, игра закончится. Проверьте, не стало ли значение равным нулю, сразу после того, как спрячете сердечко:

if health == 0:
	$HUD/Message.text = "Game Over"
	get_tree().paused = true

Герой и страж используют режим Pausable, поэтому они замирают. Для Main установлен режим Always, поэтому его _process продолжает выполняться. Когда игрок нажимает Enter, запускается новая игра:

func _process(delta):
	if get_tree().paused and Input.is_action_just_pressed("action"):
		get_tree().paused = false
		get_tree().reload_current_scene()

Перезагрузка сбрасывает всё: три сердечка, ключ на полу и запертую дверь.

challenge icon

Задание

Средне
  1. Когда health достигает 0, покажи Game Over в $HUD/Message и приостанови игру.
  2. Пока игра приостановлена, нажатие Enter (action) возобновляет игру и перезагружает сцену.

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

extends Node2D

var has_key = false
var health = 3

func _ready():
	$Key.body_entered.connect(_on_key_body_entered)
	$DoorZone.body_entered.connect(_on_door_zone_body_entered)
	$Enemy.body_entered.connect(_on_enemy_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()

func _on_enemy_body_entered(body):
	health -= 1
	$HUD/Hearts.get_child(health).visible = false
	$Hero.flash()
quiz iconПроверьте себя

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

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

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