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.
Desafio
MédioFaça a bola quebrar os tijolos.
- Em
_on_body_entered, adicione umelifpara os corpos no grupobricks. - Chame
body.smash(). - 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
1Projeto: Breakout
Raquete do BreakoutMantenha a raquete na tela4Projeto: Explorador de Masmorras
Percorra a masmorraPegue a chavePratique por conta própria: Playground de Godot