Вы можете использовать эту функцию, чтобы определить, пересекаются ли два ребра (ограничивающие рамки спрайтов):
CGRectIntersectsRect(rect1, rect2);
, а затем рассчитать z-порядок.
Если вы хотите быть более точным, вы можете рассчитать индекс, чтобы узнать, насколько первый спрайт покрывает второй:
Index = (2 * Area (CGRectIntersection(rect 1, rect2)))/(Area(rect1) + Area(rect2));
CGRectIntersection
вычислить прямоугольник, сгенерированный пересечением двух других.
Если индекс равен 1, два прямоугольника находятся точно один над другим.