Я думаю, что для первой итерации вы должны реализовать цикл for и посмотреть, достаточно ли он быстр.
Если это не так, я думаю, вы могли бы разделить игровую область на прямоугольники и распределить объекты на прямоугольникиобъект, который перекрывает несколько прямоугольников, принадлежит всем им).Затем, когда вы делаете столкновение, вы можете проверить только в том прямоугольнике, где находится ваш начальный объект.Конечно, это во многом зависит от того, что у вас там есть.Если все объекты много двигаются, это может быть не такой уж горячей идеей.