Rompe los ladrillos
Parte de la sección Proyectos del Journey de Godot de Coddy. Lección 6 de 36.
La pelota atraviesa los ladrillos. Los ladrillos también son cuerpos, y cada uno está en el grupo bricks. is_in_group permite distinguir un ladrillo de la paleta.
Cada ladrillo tiene una función smash(). Hace estallar el ladrillo en chispas y lo elimina.
elif body.is_in_group("bricks"):
body.smash()Después, la pelota rebota alejándose del centro del ladrillo: hacia abajo si está más abajo que el ladrillo, hacia arriba si está más arriba. La pelota puede golpear un ladrillo desde arriba después de colarse por un hueco.
if position.y > body.position.y:
velocity.y = abs(velocity.y)
else:
velocity.y = -abs(velocity.y)No inviertas velocity.y. Si la pelota toca dos ladrillos a la vez, dos inversiones se cancelan.
Desafío
IntermedioHaz que la pelota rompa los ladrillos.
- En
_on_body_entered, añade unelifpara los cuerpos del grupobricks. - Llama a
body.smash(). - Haz que la pelota rebote hacia abajo si está por debajo del centro del ladrillo y hacia arriba si está por encima.
Pulsa «Jugar»: los ladrillos estallan uno a la vez. Después, pulsa «Comprobar».
Pruébalo tú mismo
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)
Todas las lecciones de Proyectos
Practica por tu cuenta: Playground de Godot