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

Программирование на Юнити.

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

Сообщение KoteKotovK 17 окт 2018, 05:52

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

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

Сообщение 1max1 17 окт 2018, 06:55

Как пример, если я пересекаю 2 полигонКоллайдера по 1000 граней в каждом друг с другом, то проблем никаких, а если это будет 5 полигон колайдеров, 4 по 500 граней и один 250, то просед достаточно явный.

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

:-?
Если тебе нужен первый попавшейся в коллайдер почему бы не использовать OnCollisionEnter2D?
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

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

Сообщение KoteKotovK 17 окт 2018, 09:03

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

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

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

Вы меня не прально поняли. Мне нужно вызывать проверку пересечений за один кадр и мне достаточно одного пересечения где-либо, чтобы всё работало как надо, а OnCollisionEnter2D это же соприкосновение, да и использовать OnTriggerEnter2D тож не получится.
KoteKotovK
UNITрон
 
Сообщения: 267
Зарегистрирован: 20 июн 2014, 06:41

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

Сообщение 1max1 17 окт 2018, 09:26

мне достаточно одного пересечения

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

Это не одно и тоже? Там и там коллайдеры которые пересекаются. Если нужно в каждом фрейме то есть метод OnCollisionStay2D.
У тебя там реально фпс проседает из-за этого метода? Странно...
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

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

Сообщение KoteKotovK 17 окт 2018, 10:09

1max1 писал(а):
мне достаточно одного пересечения

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

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

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

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

Сообщение 1max1 17 окт 2018, 10:41

Мне кажется нативного метода, который ты хочешь в юнити нет, так что наверное придется делать свой метод, хотя подожди может кто другой ответит)
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51


Вернуться в Скрипты

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 11