В 2D-игре с прокруткой объекты должны двигаться или камера должна двигаться?

8

Я новичок в игровом дизайне и не знаю, как это делается. Я имею в виду создание игры для iOS, в которой корабль должен лететь как можно выше (с переменной скоростью), собирая бонусы и так далее, в пути.

Какой способ пойти сюда? Должны ли фон и предметы прокручиваться сверху или корабль действительно взлетает, перемещая при этом вид?

Томас
источник
Единственный правильный ответ - «оба».
Блецки

Ответы:

6

Это все относительно. На самом деле, вы всегда трансформируете свое мнение относительно вашей фиксированной позиции игрока.

Итак, забыв сейчас об экране, скажем, у вас есть эти 3 шага (представляющих позиции по мере их обновления в каждом игровом цикле):

  1. playerWorldPosition = 50, 100; objectWorldPosition = 60, 200;
  2. playerWorldPosition = 55, 110; objectWorldPosition = 60, 160;
  3. playerWorldPosition = 60, 120; objectWorldPosition = 60, 120;

(как х, у в каждом случае)

Как вы можете видеть, игрок взлетает или прыгает вверх и немного двигается вправо, в то время как объект (может быть powerup) падает прямо вниз. Игрок ловит бонусы. Теперь, как вы рисуете это на экране?

Во-первых, давайте предположим, что вы хотите, чтобы ваш игрок всегда находился в центре экрана. Таким образом, представление привязывается к игроку - это самый простой подход к визуализации. Положение вашего игрока будет всегда screenCentre(т.е. screenWidth/2, screenHeight/2). Как тогда вы получаете на экране положение других объектов в мире?

objectScreenPosition = (objectWorldPosition - playerWorldPosition) + screenCentre;

Вы можете видеть, что эта формула работает даже для реального игрока, так (playerWorldPosition- playerWorldPosition) + screenCentreкак равна screenCentre. Таким образом, вы можете применить одну и ту же формулу к каждой сущности в вашей игре, просматривая список. Вы можете использовать этот простой подход, чтобы использовать его для других целей (например, отставание камеры, случаи, когда вы находитесь в углу уровня и т. Д.)

инженер
источник
А что, если в нуле или много объектов игрока? Что делать, если вы хотите сделать специальные эффекты, такие как дрожание камеры? Даже если математика выглядит одинаково, это на самом деле не то же самое. И это не тот или другой. Объекты движутся, и камера тоже движется.
Блецки
1
@Blecki ... Вы говорите, после того, как ответ был принят. Если вы действительно думаете, что они такие разные, вам, наверное, будет трудно настроить свои взгляды. Тогда напишите свой собственный краткий ответ о преобразованиях представлений, который касается всех угловых случаев. Никто не мешает тебе.
инженер
У вас есть камера, у нее есть позиция, вы создаете матрицу вида. Здесь нет углового корпуса.
Блецки
1
@Blecki Теперь ты сам себе противоречишь. «Что, если вы хотите сделать специальные эффекты, такие как дрожание камеры?»
Инженер
1
@Blecki. Правильный. Рад, что мы согласны.
инженер