Я работаю с AndEngine с расширением Box2d, но общий ответ или идея концепции тоже будут оценены.
У меня есть похожие на перья объекты в 2D мире с боковым видом, который я хочу стать частью физического моделирования. Я использую линейное демпфирование, чтобы «перо» медленно падало. Это может быть не очень хорошая идея, может быть, мне лучше применять силу в каждом обновлении, но, тем не менее, это работает, и это заставляет объект выглядеть «легким», и кажется, что есть воздух с сопротивлением.
Теперь, как я могу сделать объекты похожими на перья, падающие в воздухе?
В частности, я ищу два типа объектов: длинные с низкой плотностью, которые должны двигаться вниз при медленном колебательном движении, и квадратные объекты, которые просто случайным образом меняют траекторию. Было бы здорово, если бы это была одна симуляция, а длина была бы параметром - чем длиннее объект, тем больше он будет качаться. Прямо сейчас я хочу симулировать перья, листья и снежинки в мире мультфильмов.
Ответы:
Очень похоже на посадку на Луну, вы должны притворяться . Физика автоповорота, вызванного трепетанием, кувырком и вихрем , сложна. Есть статьи по моделированию этого эффекта , и они производят прекрасные анимации Java .
Но я бы даже пошел дальше в вашей подделке и реализовал что-то вроде растущей синусоиды, чтобы оживить движение.
Очевидно, вы захотите настроить начальные значения, скорость независимого увеличения амплитуды и частоты, пока не получите то, что выглядит ближе к тому, что вы хотите. Вы хотели бы добавить некоторую случайность, чтобы сделать это интересным. Кроме того, как ваш пример показывает, очень легкие объекты с высокой площадью поверхности могут фактически идти вверх вблизи краев их волн. Таким образом, волны выше определенной амплитуды должны начать увеличиваться с небольшим максимальным значением.
Чем меньше масса и больше площадь поверхности объекта, тем больше вы увеличиваете амплитуду и частоту синусоиды. Большая масса и меньшая площадь поверхности должны приводить к уменьшению амплитуды и частоты.
источник