Menu
CoddyTech

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.

challenge icon

Desafío

Intermedio

En _on_body_entered, añade un elif para los cuerpos del grupo bricks:

  1. Llama a body.smash().
  2. 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)
quiz iconPonte a prueba

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