Menu
CoddyTech

Rompi i mattoncini

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

La palla attraversa i mattoni. Anche i mattoni sono corpi e ciascuno 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()

Poi 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. Una palla può colpire un mattone dall’alto dopo essere passata attraverso uno spazio.

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

Fai in modo che la palla rompa i mattoni.

  1. In _on_body_entered, aggiungi un elif per i corpi nel gruppo bricks.
  2. Chiama body.smash().
  3. Fai rimbalzare la palla verso il basso se si trova sotto il centro del mattone, verso l'alto se si trova sopra.

Premi «Gioca»: i mattoni esplodono uno alla volta. Poi premi «Verifica».

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)

Tutte le lezioni di Progetti

Esercitati da solo: Playground Godot