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.
Défi
MoyenDans _on_body_entered, ajoute une branche elif pour les corps du groupe bricks :
- Appelle
body.smash(). - 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)
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