Если вы хотите провести некоторую оптимизацию для количества объектов, которые вы хотите проверить друг против друга, вы можете подумать об использовании Quadtree
http://en.wikipedia.org/wiki/Quadtree
Идея состоит в том, чтобы разделить экран на 4 узла, разместив все элементы в узле, которому они принадлежат, а затем разделить узлы, которые вы только что создали, еще на 4, если там есть спрайты / элементы / все, что нужно проверить , Продолжайте делать это, пока не будет достигнут определенный размер или количество элементов в узле.
Затем вы можете спросить верхний узел, содержит ли он элемент, который вы хотите проверить. Затем этот узел спросит дочерние узлы, содержит ли он элемент, который, в свою очередь, спросит своих детей. Таким образом, большая часть экрана уже может быть пропущена (если она находится в дочернем элементе 00, вы можете пропустить дочерний элемент 01, 10 и 11). Затем вы получите список элементов, для которых вы выполняете более конкретное обнаружение столкновений, когда это необходимо.
Если бы вы сделали это визуально, это выглядело бы примерно так:
альтернативный текст http://geodata.ethz.ch/geovite/tutorials/L2GeodataStructuresAndDataModels/en/images/quadtree.gif