Rompe los ladrillos
Parte de la sección Proyectos del Journey de Godot de Coddy. Lección 6 de 33.
La pelota atraviesa los ladrillos. Los ladrillos también son cuerpos, y cada uno está en el grupo bricks. is_in_group distingue un ladrillo de la paleta.
Cada ladrillo tiene una función smash(). Hace que el ladrillo estalle 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, y hacia arriba si está más arriba. Una pelota puede golpear un ladrillo desde arriba después de pasar 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
IntermedioEn _on_body_entered, añade un elif para los cuerpos del grupo bricks:
- 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.
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)
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Proyectos
Practica por tu cuenta: Playground de Godot