Score et victoire
Fait partie de la section Projets du Journey Godot de Coddy. Leçon 17 sur 33.
Un gros rocher vaut 20 points et un petit, 50. _on_rock_broken connaît la taille, il ajoute donc les points et met à jour $HUD/Score.
Tu gagnes lorsqu'il ne reste plus aucun rocher. Commence le compteur à 4. Retire-en un pour chaque rocher détruit et ajoute-en deux lorsqu'un gros se divise :
if rock.size == 2:
rocks_left += 2
rocks_left -= 1
if rocks_left == 0:
$HUD/Message.text = "You Win!"
get_tree().paused = trueCompte les deux nouveaux rochers ici, pas dans spawn_rock. spawn_rock s'exécute à la fin de la frame, le compteur atteindrait donc zéro avant que les deux derniers petits rochers existent.
Les rochers, les balles et le vaisseau sont Pausable. Main est Always.
Défi
DifficileDans main.gd :
- Ajoutez
var score = 0et affichezScore: 0au début. - Un gros rocher détruit ajoute 20 points et un petit, 50. Affichez le nouveau score.
- Ajoutez
var rocks_left = 4et décrémentez cette valeur comme indiqué. Lorsqu’elle atteint zéro, affichezYou Win!et mettez le jeu en pause.
Essayez vous-même
extends Node2D
const ROCK = preload("res://rock.tscn")
func _ready():
for i in 4:
spawn_rock(Vector2(randf_range(0, 640), 0), Vector2(randf_range(-90, 90), randf_range(40, 90)), 2)
func spawn_rock(where, velocity, size):
var rock = ROCK.instantiate()
rock.position = where
rock.velocity = velocity
rock.size = size
rock.broken.connect(_on_rock_broken)
add_child(rock)
func _on_rock_broken(rock):
if rock.size == 2:
spawn_rock.call_deferred(rock.position, rock.velocity.rotated(0.8) * 1.5, 1)
spawn_rock.call_deferred(rock.position, rock.velocity.rotated(-0.8) * 1.5, 1)
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
2Projet : jeu de tir d’astéroïdes
Faire tourner le vaisseauMettre le moteur en marcheEntraînez-vous par vous-même : Playground Godot