Menu
CoddyTech

Заморозка при попадании

Часть раздела Ощущения от игры путешествия по Godot на Coddy. Урок 17 из 23.

Заморозка при попадании останавливает игру на долю секунды, когда наносится удар. Благодаря этому удар ощущается сильнее.

Engine.time_scale — это скорость игровых часов. При значении 1 игра работает в обычном режиме. При значении 0.05 движение, твины и таймеры работают в двадцать раз медленнее.

Engine.time_scale = 0.05
await get_tree().create_timer(0.1, true, false, true).timeout
Engine.time_scale = 1.0

Обычный таймер работает по замедленным игровым часам, поэтому 0.1 секунды длились бы две реальные секунды. Последнее значение true в create_timer заставляет таймер игнорировать time_scale и отсчитывать реальные секунды. Два значения перед ним — стандартные значения по умолчанию.

Всегда возвращай time_scale к значению 1. Оно влияет на всю игру и сохраняется, пока твой код его не изменит.

challenge icon

Задание

Средне

На мгновение замораживай игру при попадании.

  1. После вспышки в hit() установи Engine.time_scale в значение 0.05.
  2. Подожди 0.1 реальной секунды с помощью таймера, который игнорирует масштаб времени, как показано выше.
  3. Снова установи Engine.time_scale в значение 1.0.

Нажми «Играть» и нажми E: дрон на мгновение остановится. Затем нажми «Проверить».

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

extends Node2D

func hit():
	modulate = Color(4, 4, 4)
	var tween = create_tween()
	tween.tween_property(self, "modulate", Color(1, 1, 1), 0.3)

Все уроки раздела Ощущения от игры

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