Вам нужно реализовать механику "bullet time" (замедление времени) для сцены с падающими шарами.
- Сцена: 3 сферы (Sphere) с компонентом
Rigidbody, падающие с высоты 10 метров на плоскость (Plane) с коллайдером. - Скрипт для каждой сферы: При падении на плоскость сфера должна уничтожаться (
Destroy(gameObject)) и увеличивать счётчик очков на +1. - Управление:
- Нажатие клавиши
Q— замедление времени до0.2(bullet time). - Нажатие клавиши
E— возврат к нормальной скорости (1.0). - Нажатие клавиши
Space— пауза/возобновление.
- Нажатие клавиши
- Корректная работа физики: При замедлении и ускорении физика (падение шаров) должна замедляться/ускоряться пропорционально.
Используйте правильные методы (
UpdatevsFixedUpdate) иTime.deltaTime/Time.fixedDeltaTime. - Индикация (опционально): На экране текст, показывающий:
- Текущий
Time.timeScale(с округлением до 1 знака) - Количество собранных очков
- Текущий
Научиться правильно использовать Time.deltaTime для движения (если бы шары двигались не физикой),
Time.timeScale для управления глобальным временем, и понять, как Time.fixedDeltaTime автоматически подстраивается под масштаб времени для корректной работы физики.
- Создайте скрипт
TimeManager.cs(на пустой GameObject) для обработки ввода и отображения UI. - Создайте скрипт
DestroyOnCollision.csдля сфер, который при столкновении с плоскостью уничтожает сферу и увеличивает счёт (используя статическую переменную или ссылку на TimeManager). - Убедитесь, что движение сфер (гравитация) корректно реагирует на
Time.timeScale(благодаряFixedUpdateничего дополнительно делать не нужно). - Добавьте текст (UI Text или TextMeshPro) для отображения
Time.timeScaleи счёта.
- При нажатии
Qпадение шаров замедляется, приE— возвращается к норме. - При
Spaceвсё замирает, но UI (счёт и текст) может продолжать обновляться (если вы используетеunscaledDeltaTime— опционально). - Физика остаётся стабильной (шары не проходят сквозь пол).
- Счёт увеличивается при каждом уничтожении шара.