Menu
CoddyTech

Für ein Rohr punkten

Teil des Abschnitts Projekte der Godot-Journey von Coddy. Lektion 27 von 36.

Jede Röhre, an der du vorbeifliegst, zählt einen Punkt. Die Röhre hat ein untergeordnetes Area2D namens Gap, einen schmalen Streifen hinter der Öffnung. Der Flieger berührt ihn erst, nachdem er hindurchgeflogen ist; dann erhältst du einen Punkt.

Verbinde in pipe.gd das Signal des untergeordneten Elements über $Gap und löse scored aus:

$Gap.body_entered.connect(_on_gap_body_entered)

func _on_gap_body_entered(body):
	scored.emit()

Verbinde in main.gd das Signal scored jeder neuen Röhre. Addiere eins zu score und zeige den Wert in $HUD/Score an. str(score) wandelt die Zahl in Text um. Zeige zu Beginn 0 an.

challenge icon

Aufgabe

Mittel

Erziele einen Punkt für jedes Rohr, das du passierst.

  1. Füge in pipe.gd signal scored hinzu, verbinde $Gap.body_entered und löse scored aus, wenn ein Körper in die Lücke eintritt.
  2. Füge in main.gd var score = 0 hinzu und zeige zu Beginn 0 in $HUD/Score an.
  3. Verbinde das scored jedes Rohrs mit einer Funktion, die den Punktestand um eins erhöht und anzeigt.

Drücke „Spielen“ und fliege durch eine Lücke: Der Punktestand zeigt 1 an. Drücke dann „Prüfen“.

Probier es selbst

extends Area2D

signal hit

const SPEED = 160

func _ready():
	body_entered.connect(_on_body_entered)

func _physics_process(delta):
	position.x -= SPEED * delta
	if position.x < -60:
		queue_free()

func _on_body_entered(body):
	hit.emit()

Alle Lektionen in Projekte

Übe selbstständig: Godot-Playground