Гравитация программирования

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

1 ответ

Решение

У поверхности Земли гравитационное ускорение всех падающих тел является постоянным (без учета сопротивления воздуха). Формула xf = x0 + v0*t + (1/2)*g*t^2 даст вам окончательную позицию xf учитывая начальную позицию x0начальная (вертикальная) скорость v0 и время t что объект падал. g константа, которая технически немного зависит от вашего возвышения и других факторов, но 9.81 m/s,

Чтобы сделать отскок, вам нужно сначала сделать некоторое обнаружение столкновений. Когда вы обнаружите столкновение, вам нужно вычислить вектор нормали к поверхности (легко, если ваша поверхность горизонтальная плоскость), а затем "отразить" (вроде) ваш вектор скорости через этот вектор (если вектор нормали указывает прямо вверх, то есть вы отскакиваете от плоской поверхности, это равносильно инверсии скорости v). Обратите внимание: чтобы сделать это реалистичным, вам, вероятно, следует применить некоторое демпфирование после отскока: помимо отражения вектора скорости, вы также захотите уменьшить его (в зависимости от того, как он отразился после отскока, это может привести к уменьшению один или оба компонента).

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

Другие вопросы по тегам