Я видел эту игру
Модные штаны 2 . И что я заметил помимо физики и красивой анимации, так это то, что персонаж движется по склонам, даже изогнутым. У меня мало опыта в Box2d, но эта концепция изогнутых склонов является новой для меня. Мне было бы очень полезно, если бы кто-то просветил меня об этой концепции и ее реализации. Даже если реализация не в box2d, это приветствуется.
Ответы:
Как вы получаете кривые в Box2D?
В неизданной версии Box2D есть два новых типа фигур , b2LoopShape и b2EdgeShape , которые позволяют строить кривые из последовательности отрезков.
В выпущенной версии вы можете использовать несколько маленьких прямоугольников, установленных под углами, чтобы получить аналогичный эффект, но тела имеют тенденцию делать нестабильные и неожиданные вещи рядом с точками соединения. Поэтому я бы рекомендовал использовать неизданную версию.
Как персонаж может упасть по кривой?
Сделай персонажа рулем! Мой вопрос о физике платформеров имеет некоторое обсуждение этого вопроса , но основная идея состоит в том, чтобы установить тело вашего персонажа на вращающееся колесо и двигаться, применяя вращательное усилие к колесу. Даже если (на самом деле, потому что) колесо имеет трение, нисходящая сила гравитации заставит его вращаться вниз по склонам - как настоящее колесо. Изменяя параметры двигателя поворотного соединения , вы можете заставить его сопротивляться вращению настолько, насколько это необходимо, чтобы избежать его скатывания по небольшим уклонам.
источник
Fancy Pants был создан во Flash, и у Flash есть специальный метод, называемый «hitTest», который позволяет вам тестировать пиксель (в этом случае он, вероятно, выполняет 2-3 пиксельных hitTests вдоль нижней части символа Fancy Pants) против всего, что нарисовано. внутри назначенного объекта мувиклипа. Может быть немного сложно понять это правильно, но эта встроенная функция - то, почему у многих флэш-игр возникают коллизии с изогнутыми склонами. Этот процесс намного сложнее для большинства других двигателей и обычно должен выполняться вручную, но есть несколько различных методов.
Метод, с которым я наиболее знаком, заключается в том, что если ваш движок основан на тайлах (например, Соник - Еж), то каждый из плиток, обозначенных как изогнутые, может иметь формулу, которая определяет позицию столкновения «Y» на основе текущей позиции «X» персонажа. на этой плитке. Вам нужно будет определить формулу на основе того, насколько крутой склон и насколько искривленный вы ищете. Вы можете использовать графический калькулятор или графическую программу для экспериментов с формулами. Таким образом, вы можете иметь несколько плиток с разными кривыми и формулами.
источник