HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-03-10
1 <p>Теги: unity, матрица коллизий, слои, оптимизация физики</p>
1 <p>Теги: unity, матрица коллизий, слои, оптимизация физики</p>
2 <p>Как правило, игровые объекты в Unity создают на слое<strong>Default</strong>. В результате всё со всем сталкивается, что не есть хорошо. Но разработчик может обозначить, что и с чем должно взаимодействовать. Для этого ему следует определить различные слои для различных типов объектов, добавляя для каждого нового слоя свою строку и свой столбец. За определение коллизий между слоями отвечает<strong>матрица коллизий</strong>.</p>
2 <p>Как правило, игровые объекты в Unity создают на слое<strong>Default</strong>. В результате всё со всем сталкивается, что не есть хорошо. Но разработчик может обозначить, что и с чем должно взаимодействовать. Для этого ему следует определить различные слои для различных типов объектов, добавляя для каждого нового слоя свою строку и свой столбец. За определение коллизий между слоями отвечает<strong>матрица коллизий</strong>.</p>
3 <p>В момент добавления нового слоя матрица коллизий по умолчанию определяет столкновения этого слоя с другими слоями. Выполнив правильные настройки, вы сможете избежать незапланированных столкновений, плюс сможете тестировать события коллизий.</p>
3 <p>В момент добавления нового слоя матрица коллизий по умолчанию определяет столкновения этого слоя с другими слоями. Выполнив правильные настройки, вы сможете избежать незапланированных столкновений, плюс сможете тестировать события коллизий.</p>
4 <p>Давайте посмотрим на простую демо-сцену, созданную специально для данной статьи. Демо-сцена имеет внутри контейнера 2 тысячи объектов (тысячу зелёных и тысячу красных).</p>
4 <p>Давайте посмотрим на простую демо-сцену, созданную специально для данной статьи. Демо-сцена имеет внутри контейнера 2 тысячи объектов (тысячу зелёных и тысячу красных).</p>
5 <p>Зелёные объекты должны взаимодействовать лишь сами с собой, а также со стенами (в нашем случае это слой<strong>Wall</strong>). При этом в первом тесте все объекты принадлежат слою<strong>Default</strong>, а столкновения между ними производятся посредством строкового сравнения тега игровых объектов на слушателе коллизий. Что касается второго теста, то в нём<strong>объекты разделены на 2 слоя</strong>. Взаимодействие слоёв настраивалось в матрице коллизий:</p>
5 <p>Зелёные объекты должны взаимодействовать лишь сами с собой, а также со стенами (в нашем случае это слой<strong>Wall</strong>). При этом в первом тесте все объекты принадлежат слою<strong>Default</strong>, а столкновения между ними производятся посредством строкового сравнения тега игровых объектов на слушателе коллизий. Что касается второго теста, то в нём<strong>объекты разделены на 2 слоя</strong>. Взаимодействие слоёв настраивалось в матрице коллизий:</p>
6 <p>Теперь давайте посмотрим на изображения ниже, которые берутся непосредственно из демонстрации. В ней есть простейший менеджер, считывающий число столкновений каждые 5 секунд. Обратите внимание на число ненужных столкновений в варианте с общим слоем - оно действительно впечатляет.</p>
6 <p>Теперь давайте посмотрим на изображения ниже, которые берутся непосредственно из демонстрации. В ней есть простейший менеджер, считывающий число столкновений каждые 5 секунд. Обратите внимание на число ненужных столкновений в варианте с общим слоем - оно действительно впечатляет.</p>
7 <p><strong>Число столкновений в течение 5 секунд</strong>:</p>
7 <p><strong>Число столкновений в течение 5 секунд</strong>:</p>
8 <p>Теперь посмотрим на результат профилировки для получения более конкретных данных о нашем физическом движке. На картинке ниже общие слои сравниваются с отдельными слоями в данных профилировки:</p>
8 <p>Теперь посмотрим на результат профилировки для получения более конкретных данных о нашем физическом движке. На картинке ниже общие слои сравниваются с отдельными слоями в данных профилировки:</p>
9 <p>Заметно, что есть различия по времени, которое затрачивает процессор на физику. На общем слое итоговое значение составляет около 27,7 мс, на отдельных слоях - ~17,6 мс. Как говорится, комментарии излишни.</p>
9 <p>Заметно, что есть различия по времени, которое затрачивает процессор на физику. На общем слое итоговое значение составляет около 27,7 мс, на отдельных слоях - ~17,6 мс. Как говорится, комментарии излишни.</p>
10 <p><a>Источник</a></p>
10 <p><a>Источник</a></p>
11  
11