Menu
CoddyTech

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

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

challenge icon

Aufgabe

Schwer
  1. Füge in pipe.gd signal hit hinzu. Verbinde body_entered in _ready und gib hit aus, wenn ein Körper eintritt.
  2. Füge in flyer.gd signal crashed hinzu und gib es aus, wenn position.y größer als 306 ist.
  3. Verbinde in main.gd hit jeder Pipe und crashed des Flyers mit _on_crash. Diese Funktion zeigt Game Over an 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)
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Projekte

Übe selbstständig: Godot-Playground