Redémarrer avec une touche
Fait partie de la section Règles du jeu du Journey Godot de Coddy. Leçon 15 sur 29.
Cette ligne abandonne la scène et la recharge à neuf depuis son fichier :
get_tree().reload_current_scene()La nouvelle partie commence avec trois vies, le joueur sur le carré vert et Game Over masqué.
Main est également en pause, donc son _process ne détecte jamais la touche. Définis le process_mode de Main lui-même sur Node.PROCESS_MODE_ALWAYS. Ses enfants héritent de ce mode, sauf le joueur. La scène définit le joueur comme Pausable, donc il reste à l’arrêt.
Le rechargement ne met pas le jeu en pause. Définis get_tree().paused = false avant de recharger, sinon la nouvelle partie commence en pause.
Défi
FacilePermets au joueur d’appuyer sur E pour rejouer après l’écran de fin de partie.
- Dans
_ready(), définis leprocess_modede ce nœud lui-même surNode.PROCESS_MODE_ALWAYS(sans$). - Dans
_process(), lorsquelivesvaut 0 et queactionvient d’être pressée, remets le jeu en pause, puis recharge la scène.
Appuie sur « Jouer », perds trois vies et appuie sur E : une nouvelle partie commence avec Lives: 3. Puis clique sur « Vérifier ».
Essayez vous-même
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
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Règles du jeu
3Vies et défaites
ViesFin de partieMettre le jeu en pauseMode de traitementRedémarrer avec une toucheEntraînez-vous par vous-même : Playground Godot