Menu
CoddyTech

Без сердец

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

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

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) снимает игру с паузы и перезагружает сцену.

Нажми «Играть» и потеряй три сердечка: появится Game Over. Нажми Enter, чтобы начать заново. Затем нажми «Проверить».

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

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

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

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