Я собираюсь начать разработку игры с боковой прокруткой, в которой цель игрока - пройти как можно дальше по горизонтальной оси, прежде чем касаться. Обратите внимание, что мне больше не нужно возвращаться на горизонтальную ось.
Я разрабатываю это с AndEngine для Android, который использует OpenGL и Box2d.
Прежде чем начать, мне нужно определиться с чем-то важным: должен ли я использовать мир вокруг игрока, чтобы имитировать движение, или фактически двигать игрока и следовать за ним с помощью функций камеры игрового движка?
Оба подхода имеют разные сильные и слабые стороны, поэтому я не знаю, какой из них считается лучшим. Например, что могло бы облегчить добавление бонусов по пути и иметь хороший анимированный фон?
Спасибо!
Ответы:
Перемещение камеры (прилагается к проигрывателю). Я предположил бы, что ваш мир имеет множество объектов, такие как враги. Если вы пошли с двигающимся миром, вам придется перебрать все эти объекты, чтобы обновить свои позиции каждый раз, когда мир двигался.
Если переместить игрок, и прикрепить камеру к игроку, то есть минимальное использование ресурсов. Игра будет добраться до его визуализации фазы, цикл через все один раз, как это делает каждый кадр, и сделать их в положении - camera.position. Положение камеры всегда будет равна вашей позиции игроков в этом случае.
источник
camera.setChaseEntity(player);
для достижения этого.Я всегда перемещаю камеру и рекомендую это - есть много причин, почему я предпочитаю это, но наиболее значительная, вероятно, сводится к этому:
Если вы перемещаете камеру и плеер, это только две сущности, которые необходимо обновить, чтобы прокрутить экран.
Если вы перемещаете весь мир всякий раз, когда экран должен прокручиваться, это включает в себя неизвестное и, возможно, большое количество объектов , которые необходимо обновить.
источник
Это довольно тривиально, на самом деле это не имеет никакого значения от того, что вы описали.
Либо вы перемещаете фон мимо камеры и плеера, либо перемещаете плеер и камеру вместе с ним. Я полагаю, что есть еще одна вещь, если вы просто перемещаете фон.
Хотя я полагаю, что если вы передвинете фон, вам нужно будет привязать к нему любые пикапы и врагов, что опять же тривиально, но об этом стоит подумать.
Лично я бы переместил игрока, потому что мне просто нравится, когда все делается более реалистично.
источник
Другие ответы хороши, но я хотел бы добавить несколько моментов о том, что лучше, в надежде помочь тому, кто попытается принять такое же решение для другого проекта.
Перемещение игрока:
player.x += 5;
(псевдокод).Перемещение мира:
0
.0
.В конце концов, это зависит от проекта. Если кто-то делает оригинальный клон Марио, перемещение мира может быть сложным, в то время как перемещение игрока не создает особых проблем. Желая создать огромную игру с открытым миром, возможно, лучше вместо этого переместить мир.
источник