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

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

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

Как подойти к физике в такой игре?

  • Должен ли я использовать 2D-физический движок или движок 3D-физики?
  • Существуют ли какие-либо физические двигатели, которые были разработаны с учетом этой ситуации?
  • Для любых, которые не были предназначены для этого: какие хаки или трюки понадобятся, чтобы заставить физический движок сотрудничать со мной?
9 голосов | спросил doppelgreener 18 AMpMon, 18 Apr 2011 09:14:25 +040014Monday 2011, 09:14:25

2 ответа


9

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

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

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

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

ответил ghost 18 AMpMon, 18 Apr 2011 09:56:29 +040056Monday 2011, 09:56:29
2

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

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

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

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

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

ответил LumpN 18 PMpMon, 18 Apr 2011 16:46:57 +040046Monday 2011, 16:46:57

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132