Разница в производительности между различными 2D коллайдерах можно сравнить на строго математической основе, относительное представление об их стоимости можно понять путем определения шагов, необходимых для определения того, является ли точка (P) в пределах определенной формы:
Круг коллайдер: Очень простой расчет, просто сравнить расстояние между центром круга и P с радиусом окружности. Если расстояние < радиус, точка находится в пределах круга. (Это даже дешевле вычислить, если предположить, что они сравнение расстояния < радиуса , так что позволяет избежать несколько дорогостоящего квадратного операцию корня.)
Box коллайдер: Также довольно просто, с помощью всего касание линейной алгебры; as per this solution, вам нужно вычислить и сравнить 2 пары точечных произведений между вершинами прямоугольника и точки P. (Теория заключается в том, что P должен образовывать острые углы внутри со всеми вершинами прямоугольника - если это не так, это снаружи.) Это не очень дорого, так как вычисление точечного продукта - это просто умножение и добавление. Однако относительно коллайдера круга все еще много шагов и будет медленнее.
Полигон-коллайдер: Определение того, находится ли точка внутри полигона, где все может быть очень медленным. Поскольку многоугольные коллайдеры Unity могут быть вогнутыми, упрощенный подход, такой как determining which side of each edge P lies on, не будет работать.
Один подход для потенциально вогнутых полигонов равен perform a raycast that passes from outside of the polygon to P и подсчитывает, сколько ребер пересекает его - если оно нечетное, то P находится внутри полигона. (Я реализовал это однажды в 3D раньше, но я не уверен, есть ли более быстрый подход.) Существуют и другие подходы, но они все медленнее, чем предыдущие два обнаружения столкновения; все они требуют сопоставления P с каждым ребром или вершиной многоугольника и требуют нескольких шагов умножения, добавления, а иногда и деления (медленно!), чтобы определить, находится ли P внутри многоугольника.
Edge collider: С этим коллайдером аналогичная аналогия на основе точек не работает. Самый простой способ представить его, чтобы он работал с ним, чтобы отливать луч между каждой парой его вершин, чтобы проверить, пересекаются ли они с любыми коллайдерными фигурами. Это немного сравнение яблок с апельсинами с другими коллайдерами, так как вершины коллайдера не образуют замкнутой формы - внутри «коллайдера» нет «внутренней». В результате ваши варианты использования для этого коллайдера будут ограничены (и, похоже, не применимы к тому, что вы хотите здесь). Анекдотически, this collider performs better than a polygon collider и trades blows with the box collider, но опять же, это только действительные сравнения в конкретных случаях использования (например, статические рельефы/препятствия).
Надеюсь, что это поможет. Я не включил ни одну из деталей реализации или математическую теорию, лежащую в основе большинства подходов, но я включил ссылки, где это возможно, если вы хотите продолжить их чтение. Как отмечено в моем комментарии, используйте любой коллайдер, который лучше всего подходит для объекта, который вы используете. В конце концов, круговой коллайдер может быть дешевле, чем коллайдер коробки, но он также ведет себя по-разному в физическом взаимодействии.
Если вы увеличиваете симуляцию до такой степени, что эти отдельные взаимодействия больше не актуальны, и строгое обнаружение столкновений имеет значение, то, возможно, вам захочется переключиться на более эффективный коллайдер. Конечно, вы знаете свой проект лучше всего, так что это зависит от вас.
Я думаю, вы только что ответили на свой вопрос, нет? Но сфера коллайдера определенно самая быстрая. – maksymiuk
Определение того, находится ли точка внутри круга, является более простым вычислением, чем определение того, находится ли точка в квадрате/прямоугольнике. Но используйте то, что лучше всего подходит для вашей ситуации, и только оптимизируйте эти детали позже, если вам нужно. (Скорее всего, тип коллайдеров, который вы выберете, не будет узким местом в вашей игре.) – Serlite
@maksymiuk, к сожалению, я этого не сделал, информация отображается для 3D-среды, они, скорее всего, вычисляют 2D-обнаружение попадания по-разному, что потенциально может сделать полевой коллайдер 2D быстрее, чем круговой коллайдер 2D. – Alox