피하기: 다시 플레이
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 레이블을 표시해 플레이어가 어떤 키를 눌러야 하는지 알 수 있게 합니다.
챌린지
어려움_ready()에서 이 노드의process_mode를Node.PROCESS_MODE_ALWAYS로 설정하세요.- 게임 오버 시
$HUD/Hint도 표시하세요. _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
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
게임 규칙의 모든 레슨
직접 연습해 보세요: Godot 플레이그라운드