Gegen Rohre krachen
Teil des Abschnitts Projekte der Godot-Journey von Coddy. Lektion 26 von 36.
Ein Zusammenstoß mit einem Rohr 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 = trueEin Rohr. Das Rohr 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 jedes neue Rohr mit hit, bevor es hinzugefügt wird.
Der Boden. Seine Oberkante liegt bei y = 318. Die Kante des Fliegers ist 12 Pixel von seiner Mitte entfernt, sodass er den Boden berührt, wenn position.y über 306 liegt. Dann sendet flyer.gd crashed aus.
Der Flieger, die Rohre und der Timer sind pausierbar, sodass die Pause sie alle anhält.
Aufgabe
SchwerBeende das Spiel bei einem Absturz.
- Füge in
pipe.gdsignal hithinzu, verbindebody_enteredin_readyund lösehitaus, wenn ein Körper eintritt. - Füge in
flyer.gdsignal crashedhinzu und löse es aus, wennposition.ygrößer als306ist. - Verbinde in
main.gddashit-Signal jeder Pipe und dascrashed-Signal des Flyers mit_on_crash, dasGame Overanzeigt und das Spiel pausiert.
Drücke „Spielen“ und stürze ab: „Game Over“ wird angezeigt. Drücke dann „Prüfen“.
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)
Alle Lektionen in Projekte
3Projekt: Flatterflieger
Schwerkraft für den FliegerDen Flieger flattern lassenÜbe selbstständig: Godot-Playground