Заставить персонажа двигаться по искривленному склону в Мире с гравитацией

10

Я видел эту игру

Модные штаны 2 . И что я заметил помимо физики и красивой анимации, так это то, что персонаж движется по склонам, даже изогнутым. У меня мало опыта в Box2d, но эта концепция изогнутых склонов является новой для меня. Мне было бы очень полезно, если бы кто-то просветил меня об этой концепции и ее реализации. Даже если реализация не в box2d, это приветствуется.

Вишну
источник
2
Metanet, у ребят, которые делали N (что есть во Flash), есть учебник о том, как они делали столкновения, в котором рассказывается, как они рассчитывают кривые: metanetsoftware.com/technique/tutorialA.html
CodexArcanum

Ответы:

5

Как вы получаете кривые в Box2D?

В неизданной версии Box2D есть два новых типа фигур , b2LoopShape и b2EdgeShape , которые позволяют строить кривые из последовательности отрезков.

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

Как персонаж может упасть по кривой?

Сделай персонажа рулем! Мой вопрос о физике платформеров имеет некоторое обсуждение этого вопроса , но основная идея состоит в том, чтобы установить тело вашего персонажа на вращающееся колесо и двигаться, применяя вращательное усилие к колесу. Даже если (на самом деле, потому что) колесо имеет трение, нисходящая сила гравитации заставит его вращаться вниз по склонам - как настоящее колесо. Изменяя параметры двигателя поворотного соединения , вы можете заставить его сопротивляться вращению настолько, насколько это необходимо, чтобы избежать его скатывания по небольшим уклонам.

Сообщество
источник
Я согласен с вами, используя b2LoopShape, я могу создать уклон по своему желанию. Но, перейдя по ссылке, которую вы разместили; Проблема в том, что это не приводит к тому, что flash2-порт box2d является просто версией c ++. 1.) Есть ли у вас какие-либо предложения для этого? или 2.) Знаете ли вы какой-нибудь другой физический движок для флеш, который позволяет создавать изогнутые склоны?
Вишну
Я не думаю, что порт Flash Box2D соответствует новым типам соединений / форм. Я понятия не имею, какие физические движки доступны для Flash, кроме Box2D.
@ Джо: Если я спрошу вас, было бы возможно, если бы я попытался написать класс AS для b2LoopShape, чтобы я мог включить его в API-интерфейс Box2d Flash. С чего бы мне начать движение? Любая подсказка?
Вишну
1

Fancy Pants был создан во Flash, и у Flash есть специальный метод, называемый «hitTest», который позволяет вам тестировать пиксель (в этом случае он, вероятно, выполняет 2-3 пиксельных hitTests вдоль нижней части символа Fancy Pants) против всего, что нарисовано. внутри назначенного объекта мувиклипа. Может быть немного сложно понять это правильно, но эта встроенная функция - то, почему у многих флэш-игр возникают коллизии с изогнутыми склонами. Этот процесс намного сложнее для большинства других двигателей и обычно должен выполняться вручную, но есть несколько различных методов.

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

Брайан Кэйбл
источник
Соник не имеет кривой кривой для плиток. Он использует 2-мерную карту высот для каждого пикселя.
AttackingHobo
@AttackingHobo: Можете ли вы сказать мне, что такое карта 2dheight для каждого пикселя, или вы можете указать мне место, где я могу использовать это в своих флеш играх?
Вишну
2
info.sonicretro.org/Sonic_Physics_Guide Взгляните на это. Я не знаю, поможет ли это вам, если вы используете коробку 2d. Возможно, вам придется запустить свой собственный физический движок.
AttackingHobo
@Attacking Hobo: Есть ли какое-то преимущество или возможность в «выполнении» изогнутых склонов? Если я попытаюсь создать класс AS 3.0, который допускает циклы в API box2d?
Вишну