0 added
0 removed
Original
2026-01-01
Modified
2026-03-10
1
<p>Теги: unity, оптимизация физики, rigidbody</p>
1
<p>Теги: unity, оптимизация физики, rigidbody</p>
2
<p><strong>Rigidbody</strong>- это компонент, обеспечивающий физическое взаимодействие между объектами. Даже если с коллайдером вы работаете как с триггером, для корректной работы событий<em>OnTrigger</em>вам надо добавить его на игровой объект. Если же игровые объекты не имеют компонента Rigidbody, они рассматриваются как<strong>статические коллайдеры</strong>. И это очень важный момент, ведь попытка сдвинуть статический коллайдер весьма неэффективна, так как движок заново пересчитывает весь физический мир. Но есть и хорошая новость: профайлер обязательно даст вам понять, что вы пытаетесь сдвинуть статический коллайдер - во вкладке профайлера вы получите соответствующее предупреждение.</p>
2
<p><strong>Rigidbody</strong>- это компонент, обеспечивающий физическое взаимодействие между объектами. Даже если с коллайдером вы работаете как с триггером, для корректной работы событий<em>OnTrigger</em>вам надо добавить его на игровой объект. Если же игровые объекты не имеют компонента Rigidbody, они рассматриваются как<strong>статические коллайдеры</strong>. И это очень важный момент, ведь попытка сдвинуть статический коллайдер весьма неэффективна, так как движок заново пересчитывает весь физический мир. Но есть и хорошая новость: профайлер обязательно даст вам понять, что вы пытаетесь сдвинуть статический коллайдер - во вкладке профайлера вы получите соответствующее предупреждение.</p>
3
<p>Посмотрите на тест ниже. В нём удалены Rigidbody со всех движущихся объектов первой demo-сцены. Кроме того, засняты данные профилировки, что позволяет продемонстрировать, каким образом оказывают влияние ваши попытки сдвинуть статические коллайдеры.</p>
3
<p>Посмотрите на тест ниже. В нём удалены Rigidbody со всех движущихся объектов первой demo-сцены. Кроме того, засняты данные профилировки, что позволяет продемонстрировать, каким образом оказывают влияние ваши попытки сдвинуть статические коллайдеры.</p>
4
<p><em>Предупреждение перемещения статических коллайдеров:</em></p>
4
<p><em>Предупреждение перемещения статических коллайдеров:</em></p>
5
<p>Как видно на фото выше, порядка 2 тысяч предупреждений генерируются на каждом игровом объекте. Вдобавок к этому, с ≈17,6 мс до ≈35,85 мс возросли средние затраты времени, которое потратил ЦПУ на физику. Это значит, что<strong>когда мы двигаем игровой объект, очень важно добавить на него Rigidbody</strong>. Если же вы хотите контролировать его движение вручную, достаточно просто пометить его в свойствах Rigidbody как Kinematic.</p>
5
<p>Как видно на фото выше, порядка 2 тысяч предупреждений генерируются на каждом игровом объекте. Вдобавок к этому, с ≈17,6 мс до ≈35,85 мс возросли средние затраты времени, которое потратил ЦПУ на физику. Это значит, что<strong>когда мы двигаем игровой объект, очень важно добавить на него Rigidbody</strong>. Если же вы хотите контролировать его движение вручную, достаточно просто пометить его в свойствах Rigidbody как Kinematic.</p>
6
<h2>Timestep</h2>
6
<h2>Timestep</h2>
7
<p>Timestep - это фиксированные временные участки. Настройка их значения в Time Manager напрямую влияет на частоту обновления физики и FixedUpdate(). Меняя это значение,<strong>можно подобрать золотую середины между точностью и временем</strong>, которое затрачивается ЦПУ на физику.</p>
7
<p>Timestep - это фиксированные временные участки. Настройка их значения в Time Manager напрямую влияет на частоту обновления физики и FixedUpdate(). Меняя это значение,<strong>можно подобрать золотую середины между точностью и временем</strong>, которое затрачивается ЦПУ на физику.</p>
8
<h2>Физика: 2D vs 3D</h2>
8
<h2>Физика: 2D vs 3D</h2>
9
<p>Иногда возникает вопрос, какой физический движок в большей степени подходит для вашего проекта. Тут можно дать следующий совет: если разрабатываете 2D-игру либо игру 2.5D (со псевдотрёхмерностью), то применение физического 3D-движка будет, скорее всего, избыточным, ведь ваш процессор станет впустую нагружаться дополнительным измерением. Впрочем, если интересует более детальная информация и различия между движками, читайте<a>эту статью</a>.</p>
9
<p>Иногда возникает вопрос, какой физический движок в большей степени подходит для вашего проекта. Тут можно дать следующий совет: если разрабатываете 2D-игру либо игру 2.5D (со псевдотрёхмерностью), то применение физического 3D-движка будет, скорее всего, избыточным, ведь ваш процессор станет впустую нагружаться дополнительным измерением. Впрочем, если интересует более детальная информация и различия между движками, читайте<a>эту статью</a>.</p>
10
<h2>Выводы</h2>
10
<h2>Выводы</h2>
11
<p>Вот мы и подошли к концу нашей серии статей про оптимизацию, первые части которых вы можете почитать здесь: - "<a>Оптимизируем физику в Unity: слои и матрица коллизий</a>"; - "<a>Оптимизируем физику в Unity: рейкастинг</a>".</p>
11
<p>Вот мы и подошли к концу нашей серии статей про оптимизацию, первые части которых вы можете почитать здесь: - "<a>Оптимизируем физику в Unity: слои и матрица коллизий</a>"; - "<a>Оптимизируем физику в Unity: рейкастинг</a>".</p>
12
<p>Помните, что приёмы оптимизации физики, описанные ранее, являются относительно простыми в реализации. Тем не менее они оказывают влияние на производительность вашего проекта, так как практически каждая разрабатываемая игра задействует физический движок, даже если речь идёт лишь об обработке коллизий.</p>
12
<p>Помните, что приёмы оптимизации физики, описанные ранее, являются относительно простыми в реализации. Тем не менее они оказывают влияние на производительность вашего проекта, так как практически каждая разрабатываемая игра задействует физический движок, даже если речь идёт лишь об обработке коллизий.</p>
13
<p><em>По материалам статьи "<a>Physics Best Practices</a>"</em></p>
13
<p><em>По материалам статьи "<a>Physics Best Practices</a>"</em></p>
14
14