Gegen Rohre krachen
Teil des Abschnitts Projekte der Godot-Journey von Coddy. Lektion 23 von 33.
Ein Zusammenstoß mit einer Röhre oder dem Boden sollte das Spiel beenden. Beides führt zu einer Funktion in main.gd:
func _on_crash():
$HUD/Message.text = "Game Over"
get_tree().paused = trueEine Röhre. Die Röhre ist eine Area2D mit zwei Formen: der oberen und der unteren Hälfte. Die Lücke hat keine Form. Verbinde in pipe.gd body_entered und sende ein hit-Signal aus. main.gd verbindet das hit-Signal jeder neuen Röhre, bevor sie hinzugefügt wird.
Der Boden. Seine Oberkante liegt bei y = 318. Der Rand der Flugfigur ist 12 Pixel von ihrer Mitte entfernt, sodass sie den Boden berührt, wenn position.y über 306 liegt. Dann sendet flyer.gd crashed aus.
Die Flugfigur, die Röhren und der Timer sind pausierbar, sodass die Pause sie alle anhält.
Aufgabe
Schwer- Füge in
pipe.gdsignal hithinzu. Verbindebody_enteredin_readyund gibhitaus, wenn ein Körper eintritt. - Füge in
flyer.gdsignal crashedhinzu und gib es aus, wennposition.ygrößer als 306 ist. - Verbinde in
main.gdhitjeder Pipe undcrasheddes Flyers mit_on_crash. Diese Funktion zeigtGame Overan und pausiert das Spiel.
Probier es selbst
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)
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Projekte
3Projekt: Flatterflieger
Schwerkraft für den FliegerDen Flieger flattern lassenÜbe selbstständig: Godot-Playground