Физика для 2.5D платформера с плоскостью, которая изгибается

9

Я создаю 2.5D платформер в XNA, который использует 3D-модели, которые ограничены в перемещении по 2D-плоскости (точно так же, как Trine ).

Однако, чтобы все было сложнее, я хочу, чтобы сама 2D-плоскость могла изгибаться. Рассмотрим этот повтор Клоноа (вам нужно смотреть только в течение 10 секунд): хотя игрок находился в двухмерной плоскости, сам самолет мог обернуться вокруг горы, эффективно позволяя игроку путешествовать в трехмерном пространстве - все время ограничено регулярной 2D-плоскостью платформера.

Как следует подходить к физике в такой игре?

  • Должен ли я использовать физический движок 2D или физический движок 3D?
  • Существуют ли физические двигатели, действительно разработанные с учетом этой ситуации?
  • Для тех, кто не был предназначен для этого: какие хаки или уловки будут необходимы, чтобы заставить физический движок сотрудничать со мной?
doppelgreener
источник
2
Я предполагаю, что «кривая» является чисто визуальной, с точки зрения физики она выглядит двумерной. Единственный трюк - это преобразование его в пространство GFX или преобразование в физическое пространство.
замедленная

Ответы:

9

Такой платформер по-прежнему, по сути, 2D-платформер. Эффект 2.5D, даже вьющийся вокруг горы, является просто визуализацией мира, ограниченного в 2D. Ваш физический движок, вероятно, будет работать только в этом мире, а не на его визуализации, поэтому достаточно двухмерного физического движка.

Тем не менее, вы можете быть заинтересованы в некоторых 3D-эффектах. В игре «Bionic Commando: Re -оружен» побежденные вражеские персонажи как бы «скатываются» с платформы, делая физику тряпичной куклы фактически 3D. Кроме того, большинство движков трехмерной физики позволяют вам ограничивать движение вдоль одной или нескольких осей (хотя и с некоторыми изменениями, например, создание соединения между дорогой и движущимися персонажами).

Помните, что не каждому трехмерному эффекту нужен полноценный физический движок. Вы можете написать свои собственные 3D-реализации для незначительных вещей, таких как падающий мусор после взрыва, без необходимости прибегать к полному 3D-движку.

Я рекомендую начинать с 2D-движка, если вам, вероятно, не понадобятся физические вычисления в 3-м измерении. В противном случае выберите 3D-движок и ограничьте вычисления только двумя осями, где это уместно.

призрак
источник
2

Это зависит от того, может ли какая-либо ваша физика случиться за пределами игрового пространства.

Как сказал ghostonline, анимация мусора и тряпичной куклы - классический пример физики вне 2D в игре 2.5D.

Другой пример - пули: если в вашей игре есть какие-либо снаряды, следуют ли они изгибу вашего 2D-пространства или совершают путешествие прямо, даже если это означает, что они выйдут за эти пределы?

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

Несмотря на то, что искривленные 2D игровые пространства являются хорошим дополнением, для кода требуются некоторые дополнительные затраты. Это может быть причиной того, что в Трине такого нет. Но игра все равно была веселой, не так ли? Я бы дважды подумал о такой функции.

Йонас Бетел
источник