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.
Défi
MoyenFais en sorte que la balle casse les briques.
- Dans
_on_body_entered, ajoute unelifpour les corps du groupebricks. - Appelle
body.smash(). - 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
1Projet : Casse-briques
La raquetteGarder la raquette à l’écranEntraînez-vous par vous-même : Playground Godot