Menu
CoddyTech

Quebre os tijolos

Parte da seção Projetos do Journey de Godot da Coddy. Lição 6 de 36.

A bola atravessa os tijolos. Os tijolos também são corpos, e cada um está no grupo bricks. is_in_group distingue um tijolo da raquete.

Cada tijolo tem uma função smash(). Ela faz o tijolo explodir em faíscas e o remove.

elif body.is_in_group("bricks"):
	body.smash()

Em seguida, a bola rebate para longe do meio do tijolo: para baixo, se estiver abaixo do tijolo, e para cima, se estiver acima. A bola pode atingir um tijolo por cima depois de passar por uma abertura.

if position.y > body.position.y:
	velocity.y = abs(velocity.y)
else:
	velocity.y = -abs(velocity.y)

Não inverta velocity.y. Se a bola tocar dois tijolos ao mesmo tempo, duas inversões se anulam.

challenge icon

Desafio

Médio

Faça a bola quebrar os tijolos.

  1. Em _on_body_entered, adicione um elif para os corpos no grupo bricks.
  2. Chame body.smash().
  3. Faça a bola quicar para baixo se estiver abaixo do meio do tijolo e para cima se estiver acima.

Pressione “Jogar”: os tijolos estouram um de cada vez. Depois, pressione “Verificar”.

Experimente você mesmo

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 as lições de Projetos

Pratique por conta própria: Playground de Godot