Сфера перекрытия Unity, обнаруживающая отсутствие коллайдеров - PullRequest
1 голос
/ 27 мая 2019

У меня проблема с перекрытием между двумя кубами. У меня есть уровень, который заполнен многими кубиками 1x1x1 в 3D, позиции которых меняются. Я хочу проверить, перекрываются ли два куба для данной позиции. Для этого я вызвал Phsyics.OverlapSphereNonAlloc с радиусом 0,25 в позиции (которая находится в центре перекрывающихся кубов), чтобы вернуть список коллайдеров. Если возвращается более одного коллайдера, то два коллайдера перекрываются. Это была идея. Вызов вместо этого не вернул коллайдеров. Вот 2D-иллюстрация в разрезе того, что я делаю:

Я считаю, что коллайдеры не найдены, потому что вся сфера перекрытия лежит внутри кубического коллайдера. Но в документах Unity говорится, что Phsyics.OverlapSphere ...

Возвращает массив, в котором все коллайдеры касаются сферы или находятся внутри нее.

Я бы подумал, что хотя Physics.OverlapSphere находится внутри кубического коллайдера, кубический коллайдер все еще технически находится внутри сферы перекрытия. Может кто-нибудь объяснить мне это или предложить обходной метод, чтобы найти массив всех коллайдеров в данной точке?

1 Ответ

0 голосов
/ 27 мая 2019

Проблема связана с тем, как Unity сформулировала документы.В вашем случае сфера находится внутри коллайдера, где перекрытие возвращает коллайдеры внутри сферы.

Я не уверен, над каким масштабом мы здесь работаем, но одним из подходов было бы использование Vector3.Расстояние , чтобы сравнить все блоки с вашей позицией.Если у вас есть тысячи блоков, вы можете рассмотреть возможность объединения двух методов, в результате чего у вас будет большое перекрытие, которое затем берет результат и сужает его, используя формулу расстояния.

Надеюсь, это поможет!:)

...