Оптимизируем физику в Unity: Rigidbody и Timestep | OTUS
🔥 Начинаем BLACK FRIDAY!
Максимальная скидка -25% на всё. Успейте начать обучение по самой выгодной цене.
Выбрать курс

Курсы

Программирование
iOS Developer. Basic
-25%
Python Developer. Professional
-25%
Разработчик на Spring Framework
-25%
Golang Developer. Professional
-25%
Python Developer. Basic
-25%
iOS Developer. Professional
-25%
Highload Architect
-25%
JavaScript Developer. Basic
-25%
Kotlin Backend Developer
-25%
JavaScript Developer. Professional
-25%
Android Developer. Basic
-25%
Unity Game Developer. Basic
-25%
Разработчик C#
-25%
Программист С Web-разработчик на Python Алгоритмы и структуры данных Framework Laravel PostgreSQL Reverse-Engineering. Professional CI/CD Vue.js разработчик VOIP инженер Программист 1С Flutter Mobile Developer Супер - интенсив по Kubernetes Symfony Framework Advanced Fullstack JavaScript developer Супер-интенсив "Azure для разработчиков"
Инфраструктура
Мониторинг и логирование: Zabbix, Prometheus, ELK
-25%
DevOps практики и инструменты
-25%
Архитектор сетей
-25%
Инфраструктурная платформа на основе Kubernetes
-25%
Супер-интенсив «ELK»
-16%
Супер-интенсив «IaC Ansible»
-16%
Супер-интенсив "SQL для анализа данных"
-16%
Базы данных Сетевой инженер AWS для разработчиков Cloud Solution Architecture Разработчик голосовых ассистентов и чат-ботов Внедрение и работа в DevSecOps Администратор Linux. Виртуализация и кластеризация Нереляционные базы данных Супер-практикум по использованию и настройке GIT IoT-разработчик Супер-интенсив «СУБД в высоконагруженных системах»
Специализации Курсы в разработке Подготовительные курсы
+7 499 938-92-02

Оптимизируем физику в Unity: Rigidbody и Timestep

Rigidbody — это компонент, обеспечивающий физическое взаимодействие между объектами. Даже если с коллайдером вы работаете как с триггером, для корректной работы событий OnTrigger вам надо добавить его на игровой объект. Если же игровые объекты не имеют компонента Rigidbody, они рассматриваются как статические коллайдеры. И это очень важный момент, ведь попытка сдвинуть статический коллайдер весьма неэффективна, так как движок заново пересчитывает весь физический мир. Но есть и хорошая новость: профайлер обязательно даст вам понять, что вы пытаетесь сдвинуть статический коллайдер — во вкладке профайлера вы получите соответствующее предупреждение.

Посмотрите на тест ниже. В нём удалены Rigidbody со всех движущихся объектов первой demo-сцены. Кроме того, засняты данные профилировки, что позволяет продемонстрировать, каким образом оказывают влияние ваши попытки сдвинуть статические коллайдеры.

Предупреждение перемещения статических коллайдеров:

physicsbestpractices09_1-20219-8f0982.jpg

Как видно на фото выше, порядка 2 тысяч предупреждений генерируются на каждом игровом объекте. Вдобавок к этому, с ≈17,6 мс до ≈35,85 мс возросли средние затраты времени, которое потратил ЦПУ на физику. Это значит, что когда мы двигаем игровой объект, очень важно добавить на него Rigidbody. Если же вы хотите контролировать его движение вручную, достаточно просто пометить его в свойствах Rigidbody как Kinematic.

Timestep

Timestep — это фиксированные временные участки. Настройка их значения в Time Manager напрямую влияет на частоту обновления физики и FixedUpdate(). Меняя это значение, можно подобрать золотую середины между точностью и временем, которое затрачивается ЦПУ на физику.

Физика: 2D vs 3D

Иногда возникает вопрос, какой физический движок в большей степени подходит для вашего проекта. Тут можно дать следующий совет: если разрабатываете 2D-игру либо игру 2.5D (со псевдотрёхмерностью), то применение физического 3D-движка будет, скорее всего, избыточным, ведь ваш процессор станет впустую нагружаться дополнительным измерением. Впрочем, если интересует более детальная информация и различия между движками, читайте эту статью.

Выводы

Вот мы и подошли к концу нашей серии статей про оптимизацию, первые части которых вы можете почитать здесь: — «Оптимизируем физику в Unity: слои и матрица коллизий»; — «Оптимизируем физику в Unity: рейкастинг».

Помните, что приёмы оптимизации физики, описанные ранее, являются относительно простыми в реализации. Тем не менее они оказывают влияние на производительность вашего проекта, так как практически каждая разрабатываемая игра задействует физический движок, даже если речь идёт лишь об обработке коллизий.

По материалам статьи «Physics Best Practices»

Не пропустите новые полезные статьи!

Спасибо за подписку!

Мы отправили вам письмо для подтверждения вашего email.
С уважением, OTUS!

Автор
0 комментариев
Для комментирования необходимо авторизоваться
🎁 Максимальная скидка!
Черная пятница уже в OTUS! Скидка -25% на всё!