Гравитация программирования
Я программирую игру (JAVA), и я хотел бы добавить немного гравитации. Я попытался найти формулу или что-то вроде этого, и есть такой другой способ сделать это. Я ищу формулу, которая может симулировать реалистичную гравитацию и сделать некоторый отскок, когда объект касается пола. Извините за мой плохой английский.
1 ответ
У поверхности Земли гравитационное ускорение всех падающих тел является постоянным (без учета сопротивления воздуха). Формула xf = x0 + v0*t + (1/2)*g*t^2
даст вам окончательную позицию xf
учитывая начальную позицию x0
начальная (вертикальная) скорость v0
и время t
что объект падал. g
константа, которая технически немного зависит от вашего возвышения и других факторов, но 9.81 m/s
,
Чтобы сделать отскок, вам нужно сначала сделать некоторое обнаружение столкновений. Когда вы обнаружите столкновение, вам нужно вычислить вектор нормали к поверхности (легко, если ваша поверхность горизонтальная плоскость), а затем "отразить" (вроде) ваш вектор скорости через этот вектор (если вектор нормали указывает прямо вверх, то есть вы отскакиваете от плоской поверхности, это равносильно инверсии скорости v
). Обратите внимание: чтобы сделать это реалистичным, вам, вероятно, следует применить некоторое демпфирование после отскока: помимо отражения вектора скорости, вы также захотите уменьшить его (в зависимости от того, как он отразился после отскока, это может привести к уменьшению один или оба компонента).
Чтобы фактически смоделировать такой сценарий, вы можете использовать различные методы: либо предварительно вычислить список точек, а затем запустить анимацию через них, либо вы можете смоделировать все это, используя метод Эйлера или какой-либо другой числовой квадратурный метод (правило трапеции)., Рунге Кутта и др.).