Хорошая 2D-платформа физики [закрыта]

У меня есть базовый контроллер символов, настроенный для 2D-платформы с Box2D, и я начинаю настраивать его, чтобы он чувствовал себя хорошо. Физические двигатели имеют множество регуляторов для настройки, и мне непонятно, что я впервые пишу с помощью механизма физики, какие я должен использовать. Должны ли прыжки применять силу для нескольких клещей? Импульс? Непосредственно установить скорость? Как остановить аватару от стены, не отнимая все свои трения (или я забираю все трения, но только в воздухе)? Должен ли я моделировать персонажа как капсулу? Коробка с закругленными углами? Коробка с двумя колесами? Просто одно большое колесо? Я чувствую, что кто-то должен был сделать это раньше!

В Интернете, по-видимому, очень мало ресурсов, которые не являются «первой физикой ребенка», которые все отрезаны, где я надеюсь, что кто-то уже решил проблемы. Большинство примеров физических движков для платформеров имеют плавающие элементы управления или прыжки в воздухе или легко эксплуатируемое поведение, когда временное проникновение слишком велико и т. Д.

Некоторые примеры того, что я имею в виду:

  • Кратковременное нажатие прыжка на короткое расстояние; длинный ответвитель прыгает выше.
  • Короткое заноса при остановке или обратном направлении с высокой скоростью.
  • Постоянно стоять на склонах (но, возможно, сползает вниз при уклоне).
  • Аналоговая скорость при использовании аналогового контроллера.
  • Все, что отличает хороших платформеров от плохих платформеров.
  • Смею предлагаю, стабильные движущиеся платформы?

Я действительно не ищу «эй, сделай это». Очевидно, что правильная вещь зависит от того, что я хочу в игре. Но я надеюсь, что кто-то где-то воспользовался возможностями и сказал: «Хорошая техника A действительно отличает X хорошо, техника B делает Y хорошо, но это не работает с C» или имеет несколько обработанных примеров за пределами «if (key = = пробел) character.impulse (0, 1) "

74 голоса | спросил user744 15 PM000000100000005431 2010, 22:28:54

5 ответов


56

Вот подробный справочник по физике Sonic The Hedgehog . Я бы рекомендовал прочитать его, если не на самом деле копировать его части в основном - дословно.

ответил ZorbaTHut 17 AM000000100000001031 2010, 10:16:10
25

Очень сложно реализовать, скажем, физику «Марио», используя настоящий физический движок.

В прошлый раз, когда я попробовал это, используя Chipmunk, я смоделировал игрока как 2 круга - «круг тела» поверх «круга футов»

«Круг ножек» имел некоторое трение, был невозмутимым и довольно маленьким. «Круг тела» был большим и трением, чтобы избежать прилипания к стенам /крутым склонам.

Объект был ограничен, чтобы не допускать вращения - он просто скользил вокруг

Если «ноги» касаются чего-то или находятся в последних нескольких кадрах (чтобы разрешить падающие склоны), игрок считался на земле (возможно, также имел нормальную нормальную поверхность)

Прошло некоторое время с тех пор, как я посмотрел на код, но поведение было следующим:

Когда на земле:

  • Применить «дополнительную гравитацию» (сила вниз, чтобы помочь с запуском склонов)
  • Примените трение на землю (большее значение горизонтального затухания)
  • Применить силу перемещения влево /вправо на основе элементов управления.
  • (Уменьшите силу перемещения влево /вправо, приближаясь к максимальной скорости)
  • Если нажать прыжок, примените импульс вверх

Когда в воздухе:

  • Примените сопротивление воздуха (небольшое количество горизонтального затухания)
  • Применить регулярную (или уменьшенную) гравитацию
  • Применить силу перемещения влево /вправо, если вы разрешаете управление в воздухе

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

Несколько других вещей, на которые нужно следить, хотя ... «перескакивающие» платформы могут быть трудно реализованы, и когда вы начинаете делать забавные вещи (движущиеся платформы, вращающиеся миры и т. д.), вы должны будьте осторожны, чтобы убедиться, что игрок не может попасть в ловушку /раздавлен любым движущимся объектом с анимацией.

ответил bluescrn 15 PM000000110000002131 2010, 23:11:21
17

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

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

ответил Tetrad 15 PM000000110000003531 2010, 23:09:35
9

Я написал серию статей о создании игровой платформы с нуля с использованием современных технологий и включает в себя то, как я обрабатывал простую физику:

ответил wildbunny 4 72012vEurope/Moscow11bEurope/MoscowSun, 04 Nov 2012 18:51:16 +0400 2012, 18:51:16
6

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

ответил deft_code 17 AM00000010000004731 2010, 01:05:47

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

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

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