Skip to content

Latest commit

 

History

History
45 lines (33 loc) · 3.73 KB

File metadata and controls

45 lines (33 loc) · 3.73 KB

🧪 Задача: Система замедления времени с корректной физикой

📌 Условие

Вам нужно реализовать механику "bullet time" (замедление времени) для сцены с падающими шарами.

Требования:

  1. Сцена: 3 сферы (Sphere) с компонентом Rigidbody, падающие с высоты 10 метров на плоскость (Plane) с коллайдером.
  2. Скрипт для каждой сферы: При падении на плоскость сфера должна уничтожаться (Destroy(gameObject)) и увеличивать счётчик очков на +1.
  3. Управление:
    • Нажатие клавиши Q — замедление времени до 0.2 (bullet time).
    • Нажатие клавиши E — возврат к нормальной скорости (1.0).
    • Нажатие клавиши Space — пауза/возобновление.
  4. Корректная работа физики: При замедлении и ускорении физика (падение шаров) должна замедляться/ускоряться пропорционально. Используйте правильные методы (Update vs FixedUpdate) и Time.deltaTime / Time.fixedDeltaTime.
  5. Индикация (опционально): На экране текст, показывающий:
    • Текущий Time.timeScale (с округлением до 1 знака)
    • Количество собранных очков

🎯 Цель задачи

Научиться правильно использовать Time.deltaTime для движения (если бы шары двигались не физикой), Time.timeScale для управления глобальным временем, и понять, как Time.fixedDeltaTime автоматически подстраивается под масштаб времени для корректной работы физики.


📝 Что нужно сделать в коде

  1. Создайте скрипт TimeManager.cs (на пустой GameObject) для обработки ввода и отображения UI.
  2. Создайте скрипт DestroyOnCollision.cs для сфер, который при столкновении с плоскостью уничтожает сферу и увеличивает счёт (используя статическую переменную или ссылку на TimeManager).
  3. Убедитесь, что движение сфер (гравитация) корректно реагирует на Time.timeScale (благодаря FixedUpdate ничего дополнительно делать не нужно).
  4. Добавьте текст (UI Text или TextMeshPro) для отображения Time.timeScale и счёта.

✅ Критерии проверки

  • При нажатии Q падение шаров замедляется, при E — возвращается к норме.
  • При Space всё замирает, но UI (счёт и текст) может продолжать обновляться (если вы используете unscaledDeltaTime — опционально).
  • Физика остаётся стабильной (шары не проходят сквозь пол).
  • Счёт увеличивается при каждом уничтожении шара.

⭐ If this project was useful, put a star on GitHub!