Restart po naciśnięciu klawisza
Część sekcji Zasady gry ścieżki Godot w Coddy. Lekcja 15 z 29.
Ta linia odrzuca scenę i wczytuje ją ponownie z pliku:
get_tree().reload_current_scene()Nowa gra rozpoczyna się z trzema życiami, graczem na zielonym kwadracie i ukrytym napisem Game Over.
Main również jest wstrzymany, więc jego _process nie wykrywa naciśnięcia klawisza. Ustaw własny process_mode węzła Main na Node.PROCESS_MODE_ALWAYS. Jego elementy podrzędne dziedziczą to ustawienie, z wyjątkiem gracza. Scena ustawia gracza w tryb Pausable, więc nadal się zatrzymuje.
Ponowne wczytanie nie wznawia gry. Ustaw get_tree().paused = false przed ponownym wczytaniem albo nowa gra rozpocznie się w stanie wstrzymania.
Wyzwanie
ŁatwyPozwól graczowi nacisnąć E, aby zagrać ponownie po zakończeniu gry.
- W
_ready()ustawprocess_modetego węzła naNode.PROCESS_MODE_ALWAYS(bez$). - W
_process(), gdylivesma wartość 0 i właśnie naciśniętoaction, wznów grę, a następnie wczytaj ponownie scenę.
Naciśnij „Graj”, strać trzy życia i naciśnij E: rozpocznie się nowa gra z Lives: 3. Następnie naciśnij „Sprawdź”.
Spróbuj swoich sił
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
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Zasady gry
Poćwicz samodzielnie: Edytor online Godot