Menu
CoddyTech
flag Ru iconРусскийdown icon

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

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

Игрок пока может проиграть, но не выиграть. При счёте 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()

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

challenge icon

Задание

Средне
  1. Когда счёт достигает 10, покажи You Win! и поставь игру на паузу.
  2. На паузе нажатие пробела (jump) снимает игру с паузы и перезагружает сцену.

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

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