Menu
CoddyTech

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.

challenge icon

Aufgabe

Mittel

Verbinde 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
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Projekte

Übe selbstständig: Godot-Playground