Прокрутка игровой среды в разных направлениях - PullRequest
0 голосов
/ 15 ноября 2010

Как создать игровую «область» для игры-скроллера?

Как тогда поместить различные препятствия с обнаружением столкновения вдоль этой прокручиваемой среды.

Я хочу попробовать проект, который позволит пользователю прокрутить в определенном направлении, чтобы пройти через игру.

Как можно сопоставить объекты в окружающей среде, а затем переместить то, что я предполагаю, «камера», вид окружающей среды.

Ответы [ 2 ]

1 голос
/ 15 ноября 2010

Хитрость в том, что нет "области". Единственными существующими элементами являются то, что находится под камерой (вид, который вы видите в данный момент), и небольшая окружающая область, дающая вам время, чтобы подготовить больше мира в том направлении, в котором вы двигаетесь.

Ваши мировые координаты должны быть определены так же, как и начальные координаты для вида. Вы используете плитки для создания вида - самое простое - это 9 плиток, одна из которых в данный момент «включена» и одна в каждом направлении. Если вы посмотрите на цифровую клавиатуру, вы находитесь на 5. Если вы немного переместитесь в верхний правый угол, вы увидите части плиток 8, 9, 5 и 6. В этот момент вы создадите новые плитки на случай, если вы переместитесь. в дальнейшем. Когда вы оставите плитку 5, вы, вероятно, освободите плитки 4, 1 и 2. Конечно, девять плиток могут быть не оптимальным числом.

Если вы делаете это с UIViews (вероятно, не высокопроизводительным выбором), вы, вероятно, собираетесь определить один большой вид, который может обрабатывать все плитки и разбивать их на вид (добавлять и удалять подпредставления), устанавливая рамку большого вида. определить положение вашей камеры. При перемещении вы меняете рамку для перемещения камеры, когда вам нужно перетасовать плитки, вы перемещаете плитки и рамку, чтобы освободить место, чтобы двигаться дальше в пределах координат вашего обзора.

Обнаружение столкновений довольно просто, так как вы определяете свои собственные измерения (то, что представляет «вы» в этом мире), и объекты в вашем представлении имеют измерения, с которыми вы можете проверить. CGRectIntersectsRect может быть самой простой в использовании функцией, но если у вас есть представления нестандартного размера, это станет более сложным.

Этот ответ о реализации циклического UIScrollView является аналогичной идеей, но он обрабатывает прокрутку только в одном направлении.

Это довольно распространенная тема, и если вы зайдете в Google, вы найдете множество примеров кода и учебных пособий.

0 голосов
/ 16 ноября 2010

Со стороны логики игры: Все ваши объекты (давайте назовем их игровыми объектами) должны иметь координаты (положение x и y) в вашем игровом мире. Вы сохраните все свои игровые объекты в списке. Ваш объект игрока тоже будет игровым объектом. Обычно ваша позиция "камеры" будет относительно позиции вашего игрока. То есть игрок всегда будет в центре экрана. Чтобы определить текущее «положение» на экране ваших объектов, вы просто вычтите положение камеры из положения «мира» ваших объектов. Столкновение обычно производится с помощью простых прямоугольных проверок перекрытия. Вы присваиваете всем объектам атрибуты width и height и проверяете столкновения, используя x, y, width и height.

со стороны дисплея: Если вы хотите отобразить много объектов (например, игрока, врагов, препятствий и т. Д.), Лучший способ реализовать нечто подобное - использовать OpenGL View. В этом представлении вы можете отобразить все объекты в виде текстур, которые сопоставлены с полигонами. Вы можете использовать библиотеку, такую ​​как cocos2d, в которой уже есть весь код, чтобы легко это сделать.

...