Die Felsen abschießen
Teil des Abschnitts Projekte der Godot-Journey von Coddy. Lektion 15 von 33.
Ein Felsen ist eine Area2D und ein Geschoss ist ein Körper. Daher teilt body_entered dem Felsen mit, wenn ihn ein Geschoss trifft. Jedes Geschoss befindet sich in der Gruppe bullets.
func _on_body_entered(body):
if body.is_in_group("bullets"):
body.queue_free()
burst()
queue_free()Entferne auch das Geschoss. Andernfalls fliegt es weiter und zerstört den Felsen dahinter. burst() ist bereits in rock.gd. Die Funktion erzeugt eine Staubwolke an der Stelle, an der der Felsen war. Rufe sie vor queue_free() auf.
Aufgabe
MittelVerbinde in rock.gd body_entered in _ready. Wenn ein Körper in der Gruppe bullets den Felsen berührt, entferne das Geschoss, rufe burst() auf und entferne den Felsen.
Probier es selbst
extends Area2D
var velocity = Vector2.ZERO
func _physics_process(delta):
position += velocity * delta
rotation += 0.5 * delta
if position.x < -30:
position.x += 700
if position.x > 670:
position.x -= 700
if position.y < -30:
position.y += 420
if position.y > 390:
position.y -= 420
# 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