Menu
CoddyTech

Vies de Breakout

Fait partie de la section Projets du Journey Godot de Coddy. Leçon 8 sur 33.

Lorsque la raquette manque la balle, celle-ci tombe sous l’écran. Donnez trois vies au joueur.

Dans ball.gd, si la balle descend sous y = 380, elle a été manquée. Émettez le signal missed et servez à nouveau la balle au-dessus de la raquette.

if position.y > 380:
	missed.emit()
	position = Vector2(320, 290)
	velocity = Vector2(110, -280)

Dans main.gd, décomptez les vies. À zéro, affichez Game Over et mettez le jeu en pause avec get_tree().paused = true. La raquette et la balle sont Pausable : elles se figent. Main est Always : il continue de s’exécuter et peut lire la touche Entrée :

func _process(delta):
	if get_tree().paused and Input.is_action_just_pressed("action"):
		get_tree().paused = false
		get_tree().reload_current_scene()

Reprenez le jeu avant de recharger la scène. La pause s’applique à l’arbre, pas à la scène ; une scène rechargée démarrerait donc figée.

challenge icon

Défi

Difficile
  1. Dans ball.gd, ajoute signal missed. Lorsque position.y dépasse 380, émets ce signal et replace la balle en (320, 290) avec une vitesse de (110, -280).
  2. Dans main.gd, commence par var lives = 3 et affiche Lives: 3 dans $HUD/Lives. Chaque raté fait perdre une vie et met à jour l’étiquette.
  3. À 0 vie, affiche Game Over dans $HUD/Message et mets le jeu en pause.
  4. Pendant la pause, la touche Entrée (la touche action) désactive la pause et recharge la scène.

Essayez vous-même

extends Node2D

const BRICK = preload("res://brick.tscn")
const COLORS = [Color(1, 0.42, 0.42), Color(1, 0.78, 0.34), Color(0.49, 0.95, 0.75), Color(0.369, 0.635, 1), Color(0.75, 0.82, 0.95)]

var score = 0

func _ready():
	for row in 5:
		for column in 8:
			var brick = BRICK.instantiate()
			brick.position = Vector2(68 + column * 72, 60 + row * 26)
			brick.color = COLORS[row]
			add_child(brick)
	$Ball.brick_broken.connect(_on_brick_broken)
	$HUD/Score.text = "Score: 0"

func _on_brick_broken():
	score += 10
	$HUD/Score.text = "Score: %d" % score
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Projets

Entraînez-vous par vous-même : Playground Godot