Se cogner aux tuyaux
Fait partie de la section Projets du Journey Godot de Coddy. Leçon 26 sur 36.
Toucher un tuyau ou le sol devrait mettre fin à la partie. Les deux appellent une fonction dans main.gd :
func _on_crash():
$HUD/Message.text = "Game Over"
get_tree().paused = trueUn tuyau. Le tuyau est une Area2D composée de deux formes, les moitiés supérieure et inférieure. L'espace entre les deux n'a pas de forme. Dans pipe.gd, connecte body_entered et émets un signal hit. main.gd connecte le signal hit de chaque nouveau tuyau avant de l'ajouter.
Le sol. Son sommet se trouve à y = 318. Le bord du flyer est à 12 pixels de son centre, il touche donc le sol lorsque position.y dépasse 306. flyer.gd émet alors crashed.
Le flyer, les tuyaux et le minuteur sont susceptibles d'être mis en pause, donc la pause les immobilise tous.
Défi
DifficileTermine le jeu en cas de collision.
- Dans
pipe.gd, ajoutesignal hit, connectebody_entereddans_readyet émethitlorsqu’un corps entre. - Dans
flyer.gd, ajoutesignal crashedet émet-le lorsqueposition.ydépasse306. - Dans
main.gd, connecte lehitde chaque tuyau et lecrasheddu flyer à_on_crash, qui afficheGame Overet met le jeu en pause.
Appuie sur « Jouer » et laisse-toi tomber : Game Over s’affiche. Puis appuie sur « Vérifier ».
Essayez vous-même
extends Node2D
const PIPE = preload("res://pipe.tscn")
func _ready():
$PipeTimer.timeout.connect(_on_pipe_timer_timeout)
func _on_pipe_timer_timeout():
var pipe = PIPE.instantiate()
pipe.position = Vector2(700, randf_range(100, 250))
$Pipes.add_child(pipe)
Toutes les leçons de Projets
3Projet : Flappy Flyer
La gravité du FlyerFaire battre les ailes du FlyerEntraînez-vous par vous-même : Playground Godot