Menu
CoddyTech

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 = true

Ein 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.

challenge icon

Aufgabe

Schwer

Beende das Spiel bei einem Absturz.

  1. Füge in pipe.gd signal hit hinzu, verbinde body_entered in _ready und löse hit aus, wenn ein Körper eintritt.
  2. Füge in flyer.gd signal crashed hinzu und löse es aus, wenn position.y größer als 306 ist.
  3. Verbinde in main.gd das hit-Signal jeder Pipe und das crashed-Signal des Flyers mit _on_crash, das Game Over anzeigt 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

Übe selbstständig: Godot-Playground