Menu
CoddyTech

Rompi i mattoni

Fa parte della sezione Progetti del percorso Godot di Coddy. Lezione 6 di 33.

La palla attraversa i mattoni. Anche i mattoni sono corpi e ognuno appartiene al gruppo bricks. is_in_group distingue un mattone dalla racchetta.

Ogni mattone ha una funzione smash(). Fa esplodere il mattone in scintille e lo rimuove.

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

Quindi la palla rimbalza allontanandosi dal centro del mattone: verso il basso se si trova più in basso del mattone, verso l'alto se si trova più in alto. La palla può colpire un mattone dall'alto dopo essere passata attraverso uno spazio vuoto.

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

Non invertire velocity.y. Se la palla tocca due mattoni contemporaneamente, due inversioni si annullano a vicenda.

challenge icon

Sfida

Medio

In _on_body_entered, aggiungi un elif per i corpi nel gruppo bricks:

  1. Chiama body.smash().
  2. Fai rimbalzare la palla verso il basso se si trova sotto il centro del mattone, verso l'alto se si trova sopra.

Provalo tu

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 iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Progetti

Esercitati da solo: Playground Godot