Menu
CoddyTech

Десять труб до победы

Часть раздела Проекты путешествия по Godot на Coddy. Урок 28 из 36.

Игрок пока может проиграть, но не может выиграть. При счёте 10 покажи You win! и поставь игру на паузу. Проверь это там, где счёт увеличивается:

if score == 10:
	$HUD/Message.text = "You win!"
	get_tree().paused = true

Наконец, дай игроку возможность сыграть ещё раз. Пока игра на паузе, нажатие пробела перезагружает сцену. Main работает всегда, поэтому его _process продолжает выполняться:

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

Пробел также используется для взмахов крыльями. Объект-птица приостанавливается, поэтому игнорирует нажатие, пока игра на паузе.

challenge icon

Задание

Средне

Победи, преодолев десять труб, и сыграй ещё раз.

  1. Когда счёт достигнет 10, выведи You win! в $HUD/Message и приостанови игру.
  2. Когда игра приостановлена, нажатие пробела (jump) снимает паузу и перезагружает сцену.

Нажми «Играть» и преодолей десять труб: появится You win! Нажми пробел, чтобы начать заново. Затем нажми «Проверить».

Попробуйте сами

extends Node2D

const PIPE = preload("res://pipe.tscn")

var score = 0

func _ready():
	$PipeTimer.timeout.connect(_on_pipe_timer_timeout)
	$Flyer.crashed.connect(_on_crash)
	$HUD/Score.text = "0"

func _on_pipe_timer_timeout():
	var pipe = PIPE.instantiate()
	pipe.position = Vector2(700, randf_range(100, 250))
	pipe.hit.connect(_on_crash)
	pipe.scored.connect(_on_scored)
	$Pipes.add_child(pipe)

func _on_crash():
	$HUD/Message.text = "Game Over"
	get_tree().paused = true

func _on_scored():
	score += 1
	$HUD/Score.text = str(score)
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Проекты

Потренируйтесь самостоятельно: Песочница Godot