В реальном мире гравитация будет увеличивать скорость падения на постоянную величину с течением времени (9,8 метра в секунду в секунду ). Вы можете смоделировать это, давая игроку вертикальную скорость (когда он прыгает или падает с платформы), а затем вычитая постоянную величину из этого значения каждый раз вокруг основного игрового цикла, чтобы они ускорялись с течением времени. Вы захотите установить максимальный предел для этого (конечная скорость), в противном случае, когда они упадут, они могут довольно быстро достичь невероятной скорости. Псевдокод будет выглядеть примерно так:
const GRAVITY = 10;
const TERMINAL_VELOCITY = 300;
object Player
{
int vertical_speed = 0;
int vertical_position;
function fall ()
{
this.vertical_speed = this.vertical_speed + GRAVITY;
if (this.vertical_speed > TERMINAL_VELOCITY)
{
this.vertical_speed = TERMINAL_VELOCITY;
}
this.vertical_position = this.vertical_position - this.vertical_speed;
}
}
РЕДАКТИРОВАТЬ : 9,8 метра в секунду в секунду правильно! Пожалуйста, не редактируйте его! Ускорение измеряется как изменение скорости во времени, выраженное в метрах в секунду в секунду. 9,8 метра в секунду в секунду означает, что через 1 секунду неподвижный объект набрал бы скорость, достаточную для движения со скоростью 9,8 м / с. Через 2 секунды он достигнет скорости 19,6 м / с. Через 3 секунды он достигнет скорости 29,4 м / с и так далее.
Честно говоря, я не верю, что мне пришлось это объяснять.