Без сердец
Часть раздела Проекты путешествия по 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()Перезагрузка сбрасывает всё: три сердечка, ключ на полу и запертую дверь.
Задание
Средне- Когда
healthдостигает 0, покажиGame Overв$HUD/Messageи приостанови игру. - Пока игра приостановлена, нажатие 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()
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Проекты
1Проект: «Арканоид»
Ракетка для «Арканоида»Не выпускаем ракетку за пределы экрана4Проект: Подземелье
Пройди по подземельюПодбери ключПотренируйтесь самостоятельно: Песочница Godot