Страница 1 из 1

Проблема с Collider2D.OverlapCollider

СообщениеДобавлено: 17 окт 2018, 05:52
KoteKotovK
Суть заключается в том, что OverlapCollider не останавливается после первого же пересечения с коллайдером, а находит пересечения со всеми коллайдерами, что вызывает просадки FPS'а при нахождении пересечений нескольких детализированных PolygonCollider'ов, хотя можно было бы этого избежать. Как пример, если я пересекаю 2 полигонКоллайдера по 1000 граней в каждом друг с другом, то проблем никаких, а если это будет 5 полигон колайдеров, 4 по 500 граней и один 250, то просед достаточно явный. Можно ли это как-нибудь исправить без написания своих проверок для нахождения геометрических пересечений? И ещё вопрос, можно ли отключить триангуляцию у PolygonCollider'а при вращении и нужно ли, если я гонюсь за производительностью?

Re: Проблема с Collider2D.OverlapCollider

СообщениеДобавлено: 17 окт 2018, 06:55
1max1
Как пример, если я пересекаю 2 полигонКоллайдера по 1000 граней в каждом друг с другом, то проблем никаких, а если это будет 5 полигон колайдеров, 4 по 500 граней и один 250, то просед достаточно явный.

Думаешь это так работает?
то просед достаточно явный

:-?
Если тебе нужен первый попавшейся в коллайдер почему бы не использовать OnCollisionEnter2D?

Re: Проблема с Collider2D.OverlapCollider

СообщениеДобавлено: 17 окт 2018, 09:03
KoteKotovK
1max1 писал(а):
Как пример, если я пересекаю 2 полигонКоллайдера по 1000 граней в каждом друг с другом, то проблем никаких, а если это будет 5 полигон колайдеров, 4 по 500 граней и один 250, то просед достаточно явный.

Думаешь это так работает?
то просед достаточно явный

:-?
Если тебе нужен первый попавшейся в коллайдер почему бы не использовать OnCollisionEnter2D?

Вы меня не прально поняли. Мне нужно вызывать проверку пересечений за один кадр и мне достаточно одного пересечения где-либо, чтобы всё работало как надо, а OnCollisionEnter2D это же соприкосновение, да и использовать OnTriggerEnter2D тож не получится.

Re: Проблема с Collider2D.OverlapCollider

СообщениеДобавлено: 17 окт 2018, 09:26
1max1
мне достаточно одного пересечения

а OnCollisionEnter2D это же соприкосновение

Это не одно и тоже? Там и там коллайдеры которые пересекаются. Если нужно в каждом фрейме то есть метод OnCollisionStay2D.
У тебя там реально фпс проседает из-за этого метода? Странно...

Re: Проблема с Collider2D.OverlapCollider

СообщениеДобавлено: 17 окт 2018, 10:09
KoteKotovK
1max1 писал(а):
мне достаточно одного пересечения

а OnCollisionEnter2D это же соприкосновение

Это не одно и тоже? Там и там коллайдеры которые пересекаются. Если нужно в каждом фрейме то есть метод OnCollisionStay2D.
У тебя там реально фпс проседает из-за этого метода? Странно...

Мне нужно достичь очень высокой производительности при множественном пересечении высокодетализированных PolygonCollider'ов и, что не мало важно, я не использую физику RigidBody2D и функции триггеров типа OnTriggerEnter или Stay, потому что они требуют RigidBody, да и попросту являются неправильным и непроизводительным решением для решения моей проблемы. В то же время Collider2D.OverlapCollider позволяет мне делать это, но проблема в том, что он находит пересечения до конца, с каждым коллайдером, а мне достаточно одного пересечения и вернуть false. Я попробовал найти как эта функция написана в оупен сурсе Unity, чтобы подредактировать её и использовать для своих целей, но ничего дельного там не наше.

Re: Проблема с Collider2D.OverlapCollider

СообщениеДобавлено: 17 окт 2018, 10:41
1max1
Мне кажется нативного метода, который ты хочешь в юнити нет, так что наверное придется делать свой метод, хотя подожди может кто другой ответит)