Я разрабатываю простую 2D-игру на основе плитки. У меня есть уровень, заполненный объектами, которые могут взаимодействовать с плитками и друг с другом. Проверка столкновения с каналом tilemap довольно проста, и это можно сделать для всех объектов с линейной сложностью. Но теперь мне приходится обнаруживать столкновения между объектами, и теперь я должен проверять каждый объект на каждый другой объект, что приводит к квадратной сложности.Избегайте сложностей O (n^2) для обнаружения столкновений
Я хотел бы избежать квадратной сложности. Существуют ли какие-либо известные методы для сокращения вызовов обнаружения конфликтов между объектами. Существуют ли какие-либо структуры данных (например, дерево BSP), которые легко сохраняются и позволяют одновременно отклонять множество коллизий.
Например, общее количество объектов в уровне составляет около 500, около 50 из них видны на экране в то время ...
Спасибо!
Вы хотите, чтобы обнаружение столкновения для всех или только для видимых объектов? –
hm. пока не уверен. Я думаю, что я могу игнорировать столкновения с объектами вне экрана – SadSido
, в этом случае вы можете собирать только видимые объекты и обнаруживать на них столкновения. Еще O (n^2) временная сложность. –