브레이크아웃 게임 오버
Coddy Godot 여정의 프로젝트 섹션에 포함된 레슨. 36개 중 9번째.
세 번 놓치면 게임이 끝나야 합니다. 목숨이 0이 되면 게임 오버를 표시하고 get_tree().paused = true로 일시 중지하세요. 패들과 공은 일시 중지 가능 상태이므로 멈춥니다. Main은 항상 실행되므로 계속 작동하며 Enter 키 입력을 읽을 수 있습니다:
func _process(delta):
if get_tree().paused and Input.is_action_just_pressed("action"):
get_tree().paused = false
get_tree().reload_current_scene()다시 불러오기 전에 일시 중지를 해제하세요. 일시 중지는 장면이 아니라 트리에 적용되므로, 장면을 다시 불러오면 멈춘 상태로 시작하게 됩니다.
챌린지
어려움마지막 생명이 사라지면 게임을 끝내세요.
_on_missed에서lives가 0일 때$HUD/Message에Game Over를 표시하고 게임을 일시 정지하세요._process를 추가하세요. 게임이 일시 정지된 상태에서action을 방금 눌렀다면 일시 정지를 해제한 다음 씬을 다시 불러오세요.
‘플레이’를 누르고 공 세 개를 놓쳐 보세요. Game Over가 표시되고 공이 멈춥니다. 엔터 키를 누르면 다시 시작됩니다. 그런 다음 ‘확인’을 누르세요.
직접 해보기
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
var lives = 3
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"
$Ball.missed.connect(_on_missed)
$HUD/Lives.text = "Lives: 3"
func _on_brick_broken():
score += 10
$HUD/Score.text = "Score: %d" % score
func _on_missed():
lives -= 1
$HUD/Lives.text = "Lives: %d" % lives
프로젝트의 모든 레슨
직접 연습해 보세요: Godot 플레이그라운드