2014-11-15 3 views
-1

Я ищу математику, нигде не зависимую от языка.Имитированная сила тяжести: замедление на земле приближается

«Стандарт» тяжести для объекта в игре будет идти-то вроде этого:

if player.y > ground.y { 
    player.velocity.y = player.velocity.y - gravity 
} 

В маленьком моделировании я реализации я бы на самом деле, как гравитация, чтобы ослабить, а скорость медленно, когда игрок приближается к земле.

IE: Когда объект находится на высоте 100 м над землей, он должен падать быстрее, чем когда он находится на высоте 1 м над землей. Он должен приземлиться как перо.

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

Я искал вокруг Google, но поскольку я не занимался математикой, и я не знаю названия того, что я ищу, мне не повезло.

(Примечание: я считал размещения на SE: ​​Game Dev но это больше о математике/программировании, чем сама игра дизайн я, хотя это было бы более уместно)

ответ

1

Вы правы в своем предположении, что гравитация должна быть функцией. Следующий фрагмент (источник: http://gafferongames.com/game-physics/integration-basics/) применяет большую гравитацию для более высоких значений x, где State является структурой для положения и скорости в одном измерении.

float acceleration(const State &state) 
{ 
    const float k = 10; 
    const float b = 1; 
    return -k * state.x - b*state.v; 
} 

Вы хотите реверс это, что вы можете достичь путем изменения значения Ь на основании расстояния до земли, или применяя отрицательное ускорение после некоторого порога.

Смежные вопросы