Treibende Felsen
Teil des Abschnitts Projekte der Godot-Journey von Coddy. Lektion 14 von 33.
Als Nächstes kommen die Felsen. Ein Felsen ist eine Szene, rock.tscn, und rock.gd bewegt ihn. Er treibt mit seiner velocity dahin, dreht sich langsam und wird wie das Schiff auf der anderen Bildschirmseite wieder angezeigt. Ein Felsen ist groß, deshalb wird er bei -30 und 670 statt bei 0 und 640 wieder angezeigt. So verlässt er den Bildschirm vollständig, bevor er zurückkommt.
main.gd erstellt Felsen mit einer Funktion, sodass das Erzeugen an einer Stelle gebündelt ist:
func spawn_rock(where, velocity):
var rock = ROCK.instantiate()
rock.position = where
rock.velocity = velocity
add_child(rock)Rufe sie in _ready mit einer Schleife viermal auf. Jeder Felsen erhält eine zufällige Position am oberen Rand und eine zufällige Geschwindigkeit:
spawn_rock(Vector2(randf_range(0, 640), 0), Vector2(randf_range(-90, 90), randf_range(40, 90)))Aufgabe
Schwer- Füge in
rock.gd_physics_processhinzu. Bewege den Felsen umvelocity * deltaund addiere0.5 * deltazurotation. - Lass den Felsen am Bildschirmrand wieder erscheinen: Liegt er bei
xaußerhalb von -30 oder 670, bewege ihn um 700 in die andere Richtung. Liegt er beiyaußerhalb von -30 oder 390, bewege ihn um 420. - Füge in
main.gdconst ROCK = preload("res://rock.tscn")und die Funktionspawn_rock(where, velocity)hinzu. Erzeuge wie gezeigt in_ready4 Felsen.
Probier es selbst
extends Area2D
var velocity = Vector2.ZERO
# Bursts into dust where the rock is. Call it when the rock breaks.
func burst():
var dust = CPUParticles2D.new()
dust.position = position
dust.one_shot = true
dust.explosiveness = 1.0
dust.amount = 20
dust.lifetime = 0.7
dust.spread = 180.0
dust.gravity = Vector2.ZERO
dust.initial_velocity_min = 30.0
dust.initial_velocity_max = 120.0 * scale.x
dust.scale_amount_min = 2.0
dust.scale_amount_max = 5.0
dust.color = Color(0.75, 0.82, 0.95)
dust.finished.connect(dust.queue_free)
get_parent().add_child(dust)
dust.emitting = true
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