Menu
CoddyTech

피하기: 다시 플레이

Coddy Godot 여정의 게임 규칙 섹션에 포함된 레슨. 29개 중 29번째.

마지막 단계는 게임 오버 후 플레이어가 E를 눌러 다시 플레이할 수 있게 합니다.

스파이크 방에서 이 작업을 했습니다. Main의 process_mode를 Node.PROCESS_MODE_ALWAYS로 설정하면 게임이 일시 정지된 동안에도 _process가 실행됩니다. 플레이어와 두 타이머, 모든 블록은 각 장면에서 일시 정지 가능으로 설정되어 있으므로 계속 멈춰 있습니다. 키를 누르면 일시 정지를 해제하고 다시 불러옵니다.

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

다시 불러오면 모든 블록과 점수, 목숨이 초기화됩니다. 또한 게임 오버 시 Hint 레이블을 표시해 플레이어가 어떤 키를 눌러야 하는지 알 수 있게 합니다.

challenge icon

챌린지

어려움
  1. _ready()에서 이 노드의 process_mode를 Node.PROCESS_MODE_ALWAYS로 설정하세요.
  2. 게임 오버 시 $HUD/Hint도 표시하세요.
  3. _process()를 추가하세요. lives가 0이고 action을 방금 눌렀다면 게임 일시 정지를 해제하고 장면을 다시 불러오세요.

직접 해보기

extends Node2D

var block_scene = preload("res://block.tscn")
var score = 0
var lives = 3

func _ready():
	$HUD/Score.text = "Score: %d" % score
	$HUD/Lives.text = "Lives: %d" % lives
	$SpawnTimer.timeout.connect(_on_spawn_timer_timeout)
	$ScoreTimer.timeout.connect(_on_score_timer_timeout)
	$Player.hurt.connect(_on_player_hurt)

func _on_spawn_timer_timeout():
	var block = block_scene.instantiate()
	block.position = Vector2(randf_range(40, 600), -30)
	add_child(block)

func _on_score_timer_timeout():
	score += 1
	$HUD/Score.text = "Score: %d" % score

func _on_player_hurt():
	lives -= 1
	$HUD/Lives.text = "Lives: %d" % lives
	if lives == 0:
		$HUD/GameOver.visible = true
		get_tree().paused = true
quiz icon실력 점검

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

게임 규칙의 모든 레슨

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