Menu
CoddyTech

Casser les briques

Fait partie de la section Projets du Journey Godot de Coddy. Leçon 6 sur 36.

La balle traverse les briques. Les briques sont aussi des corps, et chacune appartient au groupe bricks. is_in_group permet de distinguer une brique de la raquette.

Chaque brique possède une fonction smash(). Elle fait éclater la brique en étincelles et la supprime.

elif body.is_in_group("bricks"):
	body.smash()

Ensuite, la balle rebondit en s’éloignant du milieu de la brique : vers le bas si elle est plus basse que la brique, vers le haut si elle est plus haute. Une balle peut heurter une brique par le dessus après s’être faufilée dans un espace.

if position.y > body.position.y:
	velocity.y = abs(velocity.y)
else:
	velocity.y = -abs(velocity.y)

Ne retourne pas velocity.y. Si la balle touche deux briques à la fois, deux inversions s’annulent.

challenge icon

Défi

Moyen

Fais en sorte que la balle casse les briques.

  1. Dans _on_body_entered, ajoute un elif pour les corps du groupe bricks.
  2. Appelle body.smash().
  3. Fais rebondir la balle vers le bas si elle est sous le milieu de la brique, vers le haut si elle est au-dessus.

Appuie sur « Jouer » : les briques éclatent une à la fois. Puis clique sur « Vérifier ».

Essayez vous-même

extends Area2D

var velocity = Vector2(110, -280)

func _ready():
	body_entered.connect(_on_body_entered)

func _physics_process(delta):
	position += velocity * delta
	if position.x < 8 or position.x > 632:
		velocity.x = -velocity.x
	if position.y < 42:
		velocity.y = -velocity.y

func _on_body_entered(body):
	if body.name == "Paddle":
		velocity.x = (position.x - body.position.x) * 5
		velocity.y = -abs(velocity.y)

Toutes les leçons de Projets

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