Замедление времени вокруг игрока
Вот поиграл я в игру TimeShift (можете брать её как пример того, что я хочу сделать), и хочу сделать замедление времени вокруг игрока, инверсию времени и остановку времени вокруг игрока.
- Как остановить время так, чтобы мог двигаться только игрок?
- Как инверсировать (создать инверсию) времени так, чтобы мог двигаться только игрок?
- Как замедлить время так, чтобы мог двигаться только игрок?
Я знаю про Time.timeScale, но он меняет время всего, а мне нужно чтобы менялось время всего, кроме игрока.
Я новичок в Unity и C#
Ответы (1 шт):
Для замедления и остановки времени было бы достаточно использовать Time.unscaledTime и все его производные у игрока.
Инверсия времени задача ощутимо сложнее. Крайне не рекомендую для новичка. Но если очень хочется, то это будет что-то вроде глобальной статической переменной, которую вы будете использовать как кастомный TimeScale. При этом каждый объект в такой игре должен будет реализовывать хранение истории (здесь будет уместно сделать абстрактный класс, умеющий хранить такую информацию или соответствующий компонент). И при отрицательном значении кастомного TimeScale начинать её проигрывать. Базовую реализацию можно подсмотреть здесь: https://www.youtube.com/watch?v=eqlHpPzS22U .