Menu
CoddyTech

Détruire les roches

Fait partie de la section Projets du Journey Godot de Coddy. Leçon 15 sur 33.

Une roche est un Area2D et une balle est un corps, donc body_entered indique à la roche quand une balle la touche. Chaque balle appartient au groupe bullets.

func _on_body_entered(body):
	if body.is_in_group("bullets"):
		body.queue_free()
		burst()
		queue_free()

Supprime aussi la balle. Sinon, elle continue son vol et brise la roche derrière. burst() se trouve déjà dans rock.gd. Cette fonction projette un nuage de poussière à l’endroit où se trouvait la roche. Appelle-la avant queue_free().

challenge icon

Défi

Moyen

Dans rock.gd, connectez body_entered dans _ready. Lorsqu’un corps du groupe bullets touche le rocher, supprimez la balle, appelez burst() et supprimez le rocher.

Essayez vous-même

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 iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Projets

Entraînez-vous par vous-même : Playground Godot