В Unity, как я могу получить коллайдер 2d Polygon, который является областью большого коллайдера, вычитая какой-то меньший коллайдер внутри большого?

Как и на прикрепленном изображении, я хочу получить полигональный коллайдер из площади самого большого коллайдера, вычитая площади этих двух меньших коллайдеров внутри большого?

Я просто хочу иметь коллайдер, который покрывает только серую область на изображении ниже.

Во время выполнения, пожалуйста, можно получить составной / полигональный или какой-либо другой тип коллайдера.

Большое спасибо.

введите здесь описание изображения


person solidcomer    schedule 22.11.2019    source источник


Ответы (3)


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

person ninety-ninehundred    schedule 23.11.2019
comment
Не забудьте отметить зеленым цветом любые ответы, которые помогут. Улучшает репутацию других. - person ninety-ninehundred; 24.11.2019

Самый быстрый способ — иметь 3 отдельных коллайдера, и когда происходит столкновение с большим, вы также проверяете, что этого НЕ происходит с двумя меньшими коллайдерами.

person kefren    schedule 23.11.2019

Проверьте библиотеку Clipper для операций с полигонами (также стоит проверить eppz! Geometry, которая сама использует Clipper).

Затем вы можете использовать полученные пути полигонов (как это называется в библиотеке Clipper) для создания нескольких EdgeCollider2Ds (вы можете [установить его точки][4], чтобы создать форму каждого многоугольника.

Однако у этого подхода есть проблема, заключающаяся в том, что в конце концов у вас не будет сплошного коллайдера с внутренней и внешней сторонами, а вместо этого у вас будут только линии, с которыми можно сталкиваться. Надеюсь, в большинстве случаев это не будет проблемой.

person Jorge Galvão    schedule 12.02.2021