Menu
CoddyTech

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.

challenge icon

Desafío

Intermedio

Haz que la pelota rompa los ladrillos.

  1. En _on_body_entered, añade un elif para los cuerpos del grupo bricks.
  2. Llama a body.smash().
  3. 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