Menu
CoddyTech

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.

challenge icon

Wyzwanie

Łatwy

Pozwól graczowi nacisnąć E, aby zagrać ponownie po zakończeniu gry.

  1. W _ready() ustaw process_mode tego węzła na Node.PROCESS_MODE_ALWAYS (bez $).
  2. W _process(), gdy lives ma wartość 0 i właśnie naciśnięto action, 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
quiz iconSprawdź się

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