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.
Aufgabe
MittelErziele einen Punkt für jedes Rohr, das du passierst.
- Füge in
pipe.gdsignal scoredhinzu, verbinde$Gap.body_enteredund lösescoredaus, wenn ein Körper in die Lücke eintritt. - Füge in
main.gdvar score = 0hinzu und zeige zu Beginn0in$HUD/Scorean. - Verbinde das
scoredjedes 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
3Projekt: Flatterflieger
Schwerkraft für den FliegerDen Flieger flattern lassenÜbe selbstständig: Godot-Playground