Чтобы реализовать это, вам нужно знать максимальный шаг по времени, который ваш физический движок может сделать, продолжая при этом работать адекватно.Ради аргумента, скажем, это 0,03 секунды.
По сути, во время цикла обновления вместо простой передачи времени дельты времени шага вы захотите разбить его на сегменты такого максимального размера.Таким образом, если время дельты текущего цикла цикла составляет 0,08 секунды, то вам нужно запустить цикл обновления 3 раза с шагом по времени 0,03 с, 0,03 с, 0,02 с.Физическая система все еще прогрессировала 0,08 секунды, но она будет делать это достаточно маленькими шагами для правильной работы.
Update:(float)deltaTime
{
float maximumStep = 0.03;
float progress = 0.0;
while (progress < deltaTime)
{
float step = min((deltaTime-progress), maxStep);
**PHYSICS STEP(step)**
progress += step;
}
}