Выбор алгоритма широкофазной обрезки
Выберите наиболее эффективный алгоритм широкофазной обрезки.
В Unity Editor вы можете выбрать следующие алгоритмы для широкого обнаружения фазовых столкновений:
- Подметать и обрезать (SAP): Проекты предельно-определяющих блоков, выравниваемых по осям (AABBsХотя в целом они являются эффективными, SAP может генерировать ложные положительные результаты в больших, плоских мирах с множеством коллайдеров. В этих сценариях он может идентифицировать пары объектов для проверки узкого фазового столкновения, которые на самом деле не близки, и проекции могут перекрываться, даже если объекты далеки.
- Multibox Pruning: этот алгоритм использует сетку, в каждой ячейке которой выполняется sweep-and-prune. Обычно это повышает производительность, например если в плоском мире находится много GameObjects.
- Автоматическое обрезание коробки: разделяет мир на сетки и автоматически настраивает границы и размеры ячеек мира на основе содержания вашей сцены. Это может значительно сократить количество пар, которые нуждаются в узких фазовых проверках в подходящих средах. Этот алгоритм похож на Multibox Pruning, за исключением того, что он также может автоматически вычислять границы мира и количество подразделений
SAP является алгоритмом широкой фазы по умолчанию для физики 3D. Если вы хотите выбрать алгоритм автоматической коробки, есть несколько связанных с этим недостатков, которые вы должны учитывать:
- Накладные расходы в высокодинамичных сценах: если сцена содержит много объектов, которые постоянно и быстро пересекают границы ячеек сетки, накладные расходы на обновление их позиций в сетке могут свести на нет или даже превысить выгоду от отсеивания. В высокодинамичных сценариях более эффективным может оказаться алгоритм широкой фазы Sweep and Prune.
- Автоматическая конфигурация сетки: Автоматически определяемая сетка может быть не оптимальной для каждого возможного расположения сцены. Хотя она направлена на хорошую общецелевую конфигурацию, специфические или необычные структуры мира могут не иметь таких высоких преимуществ производительности.
- Первоначальная настройка и реконфигурация: Создание сетки требует первоначальных затрат на производительность. Если физические границы вашего мира резко изменятся во время выполнения, системе может потребоваться перенастроить сетку, что может привести к временному повышению производительности.
- Использование памяти: Структура сетки потребляет некоторую память, хотя обычно это не является серьезной проблемой.
Automatic Box Pruning обычно хорошо работает в больших открытых мирах и в сценах со множеством статических или редко движущихся коллайдеров. Для небольших плотных сцен или сцен с огромным количеством быстро движущихся объектов Разметка и обрезка Всегда профилируйте ваши конкретные сцены, используя Unity Profiler, и сосредоточьтесь на времени обработки широкой фазы физики, чтобы определить, какой тип широкой фазы обеспечивает наилучшую производительность для вашей игры.
Чтобы изменить тип широкой фазы:
- Выберите Изменить > Project Настройки, чтобы открыть окно Настройки Project.
- Выберите вкладку Physics > Settings.
- Выберите вкладку GameObject.
- В Широкий тип фазывыберите алгоритм широкого типа фазы.