Reiniciar com uma tecla
Parte da seção Regras do jogo do Journey de Godot da Coddy. Lição 15 de 29.
Esta linha descarta a cena e a carrega novamente do arquivo:
get_tree().reload_current_scene()O novo jogo começa com três vidas, o jogador no quadrado verde e Game Over oculto.
Main também está pausado, então seu _process nunca detecta a tecla. Defina o próprio process_mode de Main como Node.PROCESS_MODE_ALWAYS. Os filhos herdam essa configuração, exceto o jogador. A cena define o jogador como Pausable, então ele ainda para.
Recarregar não despausa o jogo. Defina get_tree().paused = false antes de recarregar, ou o novo jogo começará pausado.
Desafio
FácilPermita que o jogador pressione E para jogar novamente após o fim de jogo:
- Em
_ready(), defina oprocess_modedeste nó comoNode.PROCESS_MODE_ALWAYS. - Em
_process(), quandolivesfor 0 eactiontiver acabado de ser pressionado, retome o jogo e recarregue a cena.
Experimente você mesmo
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
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Regras do jogo
Pratique por conta própria: Playground de Godot