Quebre os blocos
Parte da seção Projetos do Journey de Godot da Coddy. Lição 6 de 33.
A bola atravessa os tijolos. Os tijolos também são corpos, e cada um está no grupo bricks. is_in_group diferencia 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()Então a bola rebate para longe do meio do tijolo: para baixo se estiver abaixo do tijolo, 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édioEm _on_body_entered, adicione um elif para os corpos do grupo bricks:
- Chame
body.smash(). - Faça a bola quicar para baixo se estiver abaixo do meio do tijolo e para cima se estiver acima.
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)
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Projetos
1Projeto: Breakout
Raquete do BreakoutMantenha a raquete na tela4Projeto: Explorador de Masmorras
Percorra a masmorraPegue a chave2Projeto: Jogo de Tiro com Asteroides
Gire a naveAcione o motorPratique por conta própria: Playground de Godot