Перезапуск по нажатию клавиши
Часть раздела Правила игры путешествия по Godot на Coddy. Урок 15 из 29.
Эта строка удаляет сцену и заново загружает её из файла:
get_tree().reload_current_scene()Новая игра начинается с тремя жизнями: игрок находится на зелёном квадрате, а надпись Game Over скрыта.
Main тоже приостановлен, поэтому его _process не видит нажатие клавиши. Установи для самого Main значение process_mode Node.PROCESS_MODE_ALWAYS. Дочерние узлы наследуют этот режим, кроме игрока. В сцене для игрока установлен режим Pausable, поэтому он по-прежнему останавливается.
Перезагрузка не снимает игру с паузы. Перед перезагрузкой установи get_tree().paused = false, иначе новая игра начнётся на паузе.
Задание
ЛегкоПусть игрок нажимает E, чтобы сыграть снова после окончания игры:
- В
_ready()задайте дляprocess_modeэтого узла значениеNode.PROCESS_MODE_ALWAYS. - В
_process(), когдаlivesравно 0 и только что была нажата клавишаaction, снимите игру с паузы и перезагрузите сцену.
Попробуйте сами
extends Node2D
var lives = 3
func _ready():
$HUD/Lives.text = "Lives: %d" % lives
$Player.hurt.connect(_on_player_hurt)
$Blink.timeout.connect(_on_blink_timeout)
$Blink.process_mode = Node.PROCESS_MODE_ALWAYS
func _process(delta):
pass
func _on_player_hurt():
lives -= 1
$HUD/Lives.text = "Lives: %d" % lives
if lives == 0:
$HUD/GameOver.visible = true
$HUD/Hint.visible = true
get_tree().paused = true
func _on_blink_timeout():
if lives == 0:
$HUD/GameOver.visible = not $HUD/GameOver.visible
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Правила игры
3Жизни и поражения
ЖизниИгра оконченаПоставить игру на паузуРежим процессаПерезапуск по нажатию клавишиПотренируйтесь самостоятельно: Песочница Godot