Menu
CoddyTech

Casser les briques

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

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 bas que la brique, vers le haut si elle est plus haut. Une balle peut frapper une brique par le dessus après s’être faufilée dans une ouverture.

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

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

challenge icon

Défi

Moyen

Dans _on_body_entered, ajoute une branche elif pour les corps du groupe bricks :

  1. Appelle body.smash().
  2. Fais rebondir la balle vers le bas si elle se trouve sous le milieu de la brique, et vers le haut si elle se trouve au-dessus.

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)
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