Punkte und Sieg
Teil des Abschnitts Projekte der Godot-Journey von Coddy. Lektion 17 von 33.
Ein großer Felsbrocken ist 20 Punkte wert und ein kleiner 50. _on_rock_broken kennt die Größe, also addiert die Punkte und aktualisiert $HUD/Score.
Du gewinnst, wenn keine Felsbrocken mehr übrig sind. Beginne die Zählung bei 4. Ziehe für jeden zerbrochenen Felsbrocken eins ab und addiere zwei, wenn ein großer sich teilt:
if rock.size == 2:
rocks_left += 2
rocks_left -= 1
if rocks_left == 0:
$HUD/Message.text = "You Win!"
get_tree().paused = trueZähle die zwei neuen Felsbrocken hier und nicht in spawn_rock. spawn_rock wird am Ende des Frames ausgeführt, sodass der Zähler null erreichen würde, bevor die letzten zwei kleinen Felsbrocken existieren.
Die Felsbrocken, Kugeln und das Raumschiff sind pausierbar. Main ist immer aktiv.
Aufgabe
SchwerIn main.gd:
- Füge
var score = 0hinzu und zeige zu BeginnScore: 0an. - Ein zerbrochener großer Felsbrocken erhöht den Punktestand um 20, ein kleiner um 50. Zeige den neuen Punktestand an.
- Füge
var rocks_left = 4hinzu und zähle ihn wie gezeigt. Bei null zeigeYou Win!an und pausiere das Spiel.
Probier es selbst
extends Node2D
const ROCK = preload("res://rock.tscn")
func _ready():
for i in 4:
spawn_rock(Vector2(randf_range(0, 640), 0), Vector2(randf_range(-90, 90), randf_range(40, 90)), 2)
func spawn_rock(where, velocity, size):
var rock = ROCK.instantiate()
rock.position = where
rock.velocity = velocity
rock.size = size
rock.broken.connect(_on_rock_broken)
add_child(rock)
func _on_rock_broken(rock):
if rock.size == 2:
spawn_rock.call_deferred(rock.position, rock.velocity.rotated(0.8) * 1.5, 1)
spawn_rock.call_deferred(rock.position, rock.velocity.rotated(-0.8) * 1.5, 1)
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Projekte
2Projekt: Asteroiden-Shooter
Das Schiff drehenDen Antrieb zündenÜbe selbstständig: Godot-Playground