Vidas de Breakout
Parte de la sección Proyectos del Journey de Godot de Coddy. Lección 8 de 36.
Cuando la paleta no alcanza la pelota, esta cae por la parte inferior. Dale al jugador tres vidas.
En ball.gd, si la pelota está por debajo de y = 380, significa que no se alcanzó. Emite una señal missed y vuelve a sacar la pelota por encima de la paleta:
if position.y > 380:
missed.emit()
position = Vector2(320, 290)
velocity = Vector2(110, -280)En main.gd, escucha esa señal de la misma manera que escuchas brick_broken. La función que llama resta una vida y muestra el nuevo recuento, igual que la función de puntuación hace con los puntos.
Desafío
DifícilDale al jugador tres vidas.
- En
ball.gd, añadesignal missed. Debajo dey = 380, emítela y vuelve a sacar la pelota como se muestra arriba. - En
main.gd, añadevar lives = 3y muestraLives: 3en$HUD/Lives. - Conecta
$Ball.missedcon_on_missed, que resta una vida y la muestra.
Pulsa «Jugar» y falla la pelota: la etiqueta muestra Lives: 2 y aparece una pelota nueva. Después, pulsa «Comprobar».
Pruébalo tú mismo
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
Todas las lecciones de Proyectos
Practica por tu cuenta: Playground de Godot