Menu
CoddyTech

브레이크아웃 생명

Coddy Godot 여정의 프로젝트 섹션에 포함된 레슨. 33개 중 8번째.

패들이 공을 놓치면 공은 아래쪽으로 떨어집니다. 플레이어에게 생명 3개를 주세요.

ball.gd에서 공이 y = 380 아래에 있으면 놓친 것으로 처리합니다. missed 신호를 보내고 패들 위에서 공을 다시 시작합니다.

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

main.gd에서 생명 수를 줄입니다. 생명이 0이 되면 Game Over를 표시하고 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()

장면을 다시 불러오기 전에 일시 정지를 해제하세요. 일시 정지는 장면이 아니라 트리에 적용되므로, 장면을 다시 불러오면 정지된 상태로 시작합니다.

challenge icon

챌린지

어려움
  1. ball.gd에서 signal missed를 추가하세요. position.y가 380보다 크면 신호를 발생시키고, 공을 속도 (110, -280)으로 (320, 290) 위치에 되돌려 놓으세요.
  2. main.gd에서 var lives = 3으로 시작하고, $HUD/Lives에 Lives: 3을 표시하세요. 공을 놓칠 때마다 생명이 하나 줄어들고 레이블이 업데이트됩니다.
  3. 생명이 0개가 되면 $HUD/Message에 Game Over를 표시하고 게임을 일시 정지하세요.
  4. 일시 정지 중에 Enter 키(action 키)를 누르면 일시 정지가 해제되고 장면이 다시 로드됩니다.

직접 해보기

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 icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

프로젝트의 모든 레슨

직접 연습해 보세요: Godot 플레이그라운드