Punkte und Sieg
Teil des Abschnitts Projekte der Godot-Journey von Coddy. Lektion 20 von 36.
Ein großer Felsen ist 20 Punkte wert und ein kleiner 50. _on_rock_broken kennt die Größe, fügt also die Punkte hinzu und aktualisiert $HUD/Score.
Du gewinnst, wenn keine Felsen mehr übrig sind. Beginne die Zählung bei 4. Ziehe für jeden zerbrochenen Felsen eins ab und addiere zwei, wenn ein großer Felsen 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 Felsen 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 Felsen existieren.
Die Felsen, Kugeln und das Raumschiff sind Pausable. Main ist Always.
Aufgabe
SchwerErziele Punkte für die Felsen und gewinne, wenn sie alle verschwunden sind.
- Füge in
main.gdvar score = 0hinzu und zeigeScore: 0an. - Ein zerbrochener großer Felsen bringt 20 Punkte, ein kleiner 50. Zeige den Punktestand an.
- Füge
var rocks_left = 4hinzu. Ziehe für jeden zerbrochenen Felsen einen ab und addiere zwei, wenn ein großer Felsen zerbricht. Bei 0 zeigeYou win!an und pausiere.
Drücke „Spielen“ und beseitige die Felsen: You win! wird angezeigt. Klicke dann auf „Prüfen“.
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)
Alle Lektionen in Projekte
Übe selbstständig: Godot-Playground