Десять труб до победы
Часть раздела Проекты путешествия по 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()Пробел также используется для взмахов крыльями. Объект-птица приостанавливается, поэтому игнорирует нажатие, пока игра на паузе.
Задание
СреднеПобеди, преодолев десять труб, и сыграй ещё раз.
- Когда счёт достигнет
10, выведиYou win!в$HUD/Messageи приостанови игру. - Когда игра приостановлена, нажатие пробела (
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)
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Проекты
3Проект: Летающий птенец
Гравитация для птенцаВзмах крыльямиПотренируйтесь самостоятельно: Песочница Godot