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

Успеть на время

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

Обратный отсчёт ничего не делает при нуле и продолжается до -1, -2. Добавь правила:

  • Когда время достигает 0, игрок проигрывает. Покажи Time's up! и останови игру.
  • Если игрок первым добирается до флага, он выигрывает. Покажи You win! и останови игру.

Останови игру с помощью get_tree().paused = true. Пауза останавливает часы, поэтому время остаётся на отметке, на которой оно остановилось. Она также останавливает игрока, поэтому никто не выиграет после истечения времени.

if time_left == 0:
	$HUD/Message.text = "Time's up!"
	get_tree().paused = true
challenge icon

Задание

Легко
  1. В _on_clock_timeout() после строки с меткой проверь, равно ли time_left 0. Если да, покажи Time's up! на $HUD/Message и поставь игру на паузу.
  2. В _on_goal_body_entered(body) поставь игру на паузу после You win!.

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

extends Node2D

var time_left = 10

func _ready():
	$HUD/Time.text = "Time: %d" % time_left
	$Goal.body_entered.connect(_on_goal_body_entered)
	$Clock.timeout.connect(_on_clock_timeout)

func _on_goal_body_entered(body):
	if body.is_in_group("player"):
		$HUD/Message.text = "You win!"

func _on_clock_timeout():
	time_left -= 1
	$HUD/Time.text = "Time: %d" % time_left
quiz iconПроверьте себя

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

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

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