Хитрость в том, что нет "области". Единственными существующими элементами являются то, что находится под камерой (вид, который вы видите в данный момент), и небольшая окружающая область, дающая вам время, чтобы подготовить больше мира в том направлении, в котором вы двигаетесь.
Ваши мировые координаты должны быть определены так же, как и начальные координаты для вида. Вы используете плитки для создания вида - самое простое - это 9 плиток, одна из которых в данный момент «включена» и одна в каждом направлении. Если вы посмотрите на цифровую клавиатуру, вы находитесь на 5. Если вы немного переместитесь в верхний правый угол, вы увидите части плиток 8, 9, 5 и 6. В этот момент вы создадите новые плитки на случай, если вы переместитесь. в дальнейшем. Когда вы оставите плитку 5, вы, вероятно, освободите плитки 4, 1 и 2. Конечно, девять плиток могут быть не оптимальным числом.
Если вы делаете это с UIViews (вероятно, не высокопроизводительным выбором), вы, вероятно, собираетесь определить один большой вид, который может обрабатывать все плитки и разбивать их на вид (добавлять и удалять подпредставления), устанавливая рамку большого вида. определить положение вашей камеры. При перемещении вы меняете рамку для перемещения камеры, когда вам нужно перетасовать плитки, вы перемещаете плитки и рамку, чтобы освободить место, чтобы двигаться дальше в пределах координат вашего обзора.
Обнаружение столкновений довольно просто, так как вы определяете свои собственные измерения (то, что представляет «вы» в этом мире), и объекты в вашем представлении имеют измерения, с которыми вы можете проверить. CGRectIntersectsRect может быть самой простой в использовании функцией, но если у вас есть представления нестандартного размера, это станет более сложным.
Этот ответ о реализации циклического UIScrollView является аналогичной идеей, но он обрабатывает прокрутку только в одном направлении.
Это довольно распространенная тема, и если вы зайдете в Google, вы найдете множество примеров кода и учебных пособий.