Мой главный герой - шар, который постоянно отскакивает от одной и той же силы. Но у меня возникают трудности с поиском правильного способа отскока на той же высоте, на которой игра увеличивает скорость. По сути, вот моя формула.
, кстати, я использую C ++ и SDL2, поэтому ось Y ПОЗИТИВНО понижается, а НЕГАТИВНО повышается:
каждый кадр, я добавляю Yvelocity на бал. Затем я добавляю гравитацию к скорости для эффекта гравитации:
ballY += Yvelocity
Yvelocity += gravity
if(Yvelocity >= maxVelocity)
{
Yvelocity = maxVelocity
}
Затем, когда я ударяюсь о землю, я делаю это, чтобы отскочить от мяча
Yvelocity = bounceForce; // -10 for example
Все отлично работает. Но я хочу сделать игру все быстрее и быстрее. Таким образом, каждый конкретный c раз, когда я делаю это:
bounceForce += bounceForce * multiplier;
gravity += gravity * multiplier;
maxVelocity += gravity * multiplier;
...
//increase other object's speed too
Скорость игры действительно увеличивается, но отскок мяча также увеличивается.
Похоже, я должен увеличьте гравитацию больше, чем bounceForce . Поэтому я попытался сделать это:
bounceForce += bounceForce * multiplier;
gravity += gravity * (multiplier * 1.5f); /////// <-------------------------
maxVelocity += gravity * multiplier;
...
//increase other object's speed too
Это отлично работает в начале. Но, вероятно, будет делать ту же проблему с течением времени (отскакивает выше).
Я думаю, чем больше увеличивается Yvelocity , тем больше гравитация множитель тоже должен увеличиться. Поскольку мяч становится легче с каждым увеличением скорости.
Но я действительно не могу найти для этого правильную формулу того, как я могу заставить мяч отскочить все быстрее и быстрее , но на такой же высоты. Поскольку для моей игры не идеально увеличивать скорость, мяч находится на постоянной скорости. Извините, я новичок ie в программировании игр. Заранее спасибо.